public class MeleeEnemy : Enemy
{
[SerializeField]
private GameObject attackRange;
protected override void Awake()
{
base.Awake();
}
private void AttackRangeActive()
{
attackRange.SetActive(false);
}
private void AttackStart()
{
attackRange.SetActive(true);
attackRange.transform.position = transform.position;
attackRange.transform.Translate(enemyMovement.direction.normalized / 2);
attackRange.GetComponent<MeleeAttack>().power = status.attack;
}
}
1. 공격 범위 오브젝트 attackRange를 활성화
2. attackRange의 위치를 Enemy의 위치로 이동
3. Translate를 이용하여 enemyMovement.direction = 타겟(플레이어)을 향한 방향으로 이동하게 함 이때 공격 범위가 너무 앞에 있으면 안되므로 방향을 Normalize를 사용하여 1로 만든 다음 /2 로 하여 오브젝트를 이동하게 진행 하였음
4. 그리고 애니메이션 이벤트로 AttackRangeActive를 통해서 아래의 사진을 통해서 바로 공격 오브젝트에 비활성화를 하게 함
public class MeleeAttack : MonoBehaviour
{
public int power;
private void OnTriggerEnter2D(Collider2D collision)
{
// && TryGetComponent<IDamagable>(out IDamagable damagable)
if (collision.CompareTag("Player") )
{
// damagable.ApplyDamage(power);
Debug.Log("플레이어 근접 공격 맞음");
}
}
}
1번에서의 설명에서 오브젝트 비활성화 처리를 하였기 때문에 추가를 하지 않았으며 플레이어가 Enter2D로 충돌했을 때 데미지를 입게 구현하였음
1. 없음
1. 없음
1. 없음