이번에는 캐릭터 공격을 어떻게 구현했는지 정리 해보겠습니다.
먼저 공격을 범위를 만듭니다.

그리고 공격 범위 오브젝트에 스크립트를 추가합니다.
using UnityEngine;
public class PlayerAttack : MonoBehaviour
{
public float attackDemage =10.0f;
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Monster"))
{
other.GetComponent<MonsterController>().Hit(attackDemage);
print(other.name);
}
}
}
그리고 공격 받는 쪽에는
public void Hit(float Damages)
{
nowHp -= Damages;
}
이렇게 추가 하면 일단은 기본적인 공격 기능을 추가 하였습니다 .
여기에서 저렇게 추가 하고 끝이 난다면 공격을 버튼을 누르지않고 계속 공격이 나가기 때문에
저는 애니메이션에

이벤트를 추가하였습니다. 그리고 이벤트로 추가한 코드에는
public void AttackBoxOn()
{
attackCollider.GetComponent<BoxCollider2D>().enabled = true;
}
이렇게 BoxCollider2D를 키고 애니메이션 끝으로 가면 BoxCollider2D끄는 방식으로 하였습니다.
그리고 CTAL 버튼을 눌렀을때 공격 할수 있도록 만들었습니다.
//업데이트 쪽
if (Input.GetKeyDown(KeyCode.LeftControl) && !attacking &&
playerState != PlayerState.jump && !jumping)
{
playerState = PlayerState.attack;
}
//---
private void Attack()
{
if (delayStart)
{
return;
}
//현재 플레이어의 방향을 찾고 그 방향에 boxCollder를 생성
Vector2 offset = sr.flipX ? leftOffset : rightOffset;
attackCollider.GetComponent<BoxCollider2D>().offset = offset;
//현재 공격중이 아니라면
if (!attacking)
{
animator.SetTrigger("Attack1");
attacking = true;
}
}

'유니티 개발 > 사이드 뷰 게임' 카테고리의 다른 글
| Unity 2D hit,dead 구현 (0) | 2025.07.18 |
|---|---|
| Unity 2D 몬스터 기본 움직임 및 공격 (0) | 2025.07.17 |
| Unity 2D 애니메이션 - 애니메이션 구현 (0) | 2025.07.17 |
| Unity 2D 애니메이션 - 애니메이션 생성 (0) | 2025.07.17 |
| Unity 2D 애니메이션 - 스프라이트 시트 설정 (0) | 2025.07.17 |