유틸리티 매크로

디버그 시 언리얼 에디터 Outer log 창에 로그를 표시하기 위한 매크로를 만든다.

BULLETTIME 카테고리 선언 및 사용

 

Bullettime.cpp에 BULLETTIME 카테고리 정의

 

게임모드 생성자에 로그를 찍어보았다. 생성자는 에디터 실행중에 호출되므로 에디터 실행 후 로그 창을 확인하면 로그가 남아있을 것이다.

 

Warning 수준, Bullettime 카테고리인 로그가 찍힌다.

로그는 중요도, 카테고리에 따라 필터링하여 확인 가능하다.

 

캐릭터와 카메라의 회전

캐릭터의 카메라가 바라보는 방향과 캐릭터의 Z축 회전 방향을 일치시키기 위한 설정

 

마우스의 횡이동에 따라 캐릭터를 Yaw 회전하도록 설정한다.

캐릭터 설정 : 폰을 각 회전축으로 사용자의 입력에 따라 회전시킬지 여부
카메라 컴포넌트의 설정 : 폰에 회전 입력이 들어오면 카메라 컴포넌트를 회전시킬지 여부

 

체력 시스템

체력은 캐릭터에서 프로퍼티로 관리한다.

일단 단순하게 초기 체력 100으로 시작하여 Bullet에 충돌시 10씩 체력이 감소하며 0이 되면 Character 액터를 Destroy하는 방식으로 구현해 놓았다.

 

Bullet 충돌 처리

충돌 처리는 Hit Event 대신에 Overlap 이벤트를 사용하여 구현하였다. Overlap 이벤트를 발생시키기 위해서는 두 오브젝트가 상대 오브젝트를 Overlap - Overlap 혹은 Overlap - Block하게 반응하도록 설정해야 하고, 양쪽 오브젝트 모두에 Generate Overlap Events가 체크되어 있어야 한다. 

 

Bullet 액터는 맵을 이루는 Static Mesh Actor(World Static 오브젝트)와 Overlap 시에 사라져야 하므로 World Static을 상대로 Overlap으로 설정하고 Bullet 간의 충돌은 처리하지 않을 것이므로 Bullet을 상대로 Ignore로 설정한다.

맵을 구성하는 static mesh에서 설정해준다.

 

총알은 벽이나 다른 플레이어에 충돌하면 사라지도록 한다. 자신(플레이어)과 충돌하는 경우에는 충돌 처리(총알의 파괴, 피격 처리)를 하지 않도록 한다.

Bullet 액터를 스폰할 때 해당 액터를 생성시킨 Owner를 정해주며 스폰하였는데, 이 정보를 Bullet의 Overlap 이벤트가 발생할 때 활용하여 스스로 체력을 깎는 현상을 방지한다.

총알 스폰할때 Owner를 자기 자신으로 지정하며 스폰함

 

Bullet의 overlap 발생할 경우 처리 과정

 

테스트로 BP_BullettimeCharacter를 월드에 하나 배치하고 10번 맞추었더니 사라졌다.

+ Recent posts