본문 바로가기

TIL

[ 24.06.20 ] 내일배움캠프 TIL - Attack Trigger

[ ps ]

 

[ 백준 / C++ ] 1406 : 에디터 (tistory.com)

 

[ Unity ]

 

2D 횡스크롤 팀프로젝트를 진행하고 있는데, 오늘은 attack trigger를 구현했다.

 

플레이어가 마우스 왼쪽을 누르면 attack을 진행하는데,

무기를 휘둘러 적을 맞추는 로직을 어떻게 구현할 것인지가 주제다.

 

일단 Player 오브젝트 안에 WeaponHitBox라는 오브젝트를 만들고, BoxCollider2D 컴포넌트를 달아주었다.

Collider 사이즈 및 위치를 무기 범위에 맞게 세팅하고, WeaponHitBox라는 스크립트를 달아주었다.

인스펙터 창

 

Player 오브젝트에 달아놓은 player 스크립트에서 이 Collider를 가져와서 작업을 진행해주는데,

일단 공격 전에는 Collider가 켜있으면 안되기 때문에 Collider.enabled = false를 해준다.

 

마우스 왼쪽 버튼을 눌러 공격 상태가 되었을 때 Collider.enabled = true를 해주고
일정 시간이 지나면 다시 Collider.enabled = false를 하는 방식으로 구현했다.

 

WeaponHitBox 스크립트에서는 Enemy Tag가 달려있으면 해당 Enemy 오브젝트의 Hp가 줄어들도록

OnTriggerEnter2D 메소드를 구현했다.

 

일단 전체적으로 특정 버튼이 눌리면 애니메이션을 실행하고 일정 시간이 지나면 되돌아오는

고전적인 방식으로 구현되어 있다.

 

이러한 구조를 FSM 방식으로 개선해보는 것이 차후 목표이다.

 

예를 들어 위의 과정은 AttackState에 돌입하면 Collider.enabled를 켜주고 AttackState에 벗어나면 꺼주는 방식으로

개선 가능할 것 같다.