OneShotOneKill/Assets/Script/InGame/Actor/MobActor.cs

88 lines
2.1 KiB
C#
Raw Normal View History

2026-01-13 00:46:52 +00:00
using System.Collections;
2026-01-12 22:13:54 +00:00
using UnityEngine;
2026-01-12 22:47:31 +00:00
public enum eMobState { Move, Attack }
2026-01-12 22:13:54 +00:00
public class MobActor : MonoBehaviour
{
2026-01-12 22:47:31 +00:00
MonsterTableData m_Data;
float FenceY, m_attackTimer;
eMobState m_State = eMobState.Move;
Animator m_Animator;
2026-01-12 22:47:31 +00:00
2026-01-12 22:13:54 +00:00
private void Awake()
{
var srs = GetComponentsInChildren<SpriteRenderer>(true);
for (int i = 0; i < srs.Length; i++)
srs[i].sortingOrder -= 5;
m_Animator = GetComponentInChildren<Animator>();
2026-01-12 22:13:54 +00:00
}
private void Update()
{
2026-01-12 22:47:31 +00:00
float distToFence = transform.position.y - FenceY;
switch (m_State)
{
case eMobState.Move:
if (distToFence <= m_Data.f_AttackRange)
OnEnterAttack();
else
Move();
break;
case eMobState.Attack:
Attack();
break;
}
}
public void Set(MonsterTableData data, float fenceY)
{
m_Data = data;
FenceY = fenceY;
m_attackTimer = m_Data.f_AttackDelay;
}
void Move()
{
transform.position += Vector3.down * Time.deltaTime * m_Data.f_MoveSpeed;
}
void OnEnterAttack()
{
m_State = eMobState.Attack;
2026-01-12 22:47:31 +00:00
// 이동 정지 시점 보정 (너무 파고들지 않게)
Vector3 pos = transform.position;
pos.y = FenceY + m_Data.f_AttackRange;
transform.position = pos;
// 애니메이션, 공격 쿨타임 초기화 등
}
void Attack()
{
m_attackTimer -= Time.deltaTime;
if (m_attackTimer > 0f)
return;
m_attackTimer = m_Data.f_AttackDelay;
//m_Animator.speed = 2f;
m_Animator.SetTrigger("att");
2026-01-13 00:46:52 +00:00
StartCoroutine(Co_AttackProjectile());
2026-01-12 22:47:31 +00:00
}
2026-01-13 00:46:52 +00:00
IEnumerator Co_AttackProjectile()
2026-01-12 22:47:31 +00:00
{
2026-01-13 00:46:52 +00:00
yield return new WaitForSeconds(1f);
ProjectileMgr.Ins.Shoot_Projectile(new ProjectileData
{
IsPC = false,
m_Data = table_projectile.Ins.Get_Data(m_Data.n_ProjectileID),
tf_Start = transform
});
2026-01-12 22:13:54 +00:00
}
}