Rifle, ShotGun, Pistol 총을 각 1, 2, 3번에 배정하여 마우스 좌클릭시 발사
총알이 다 떨어지거나, 총의 온도가 100도가 넘어가면 발사 불가능
R을 눌러 재장전하거나, T를 눌러 온도를 10도씩 낮추며 관리
각 무기의 정보를 저장할 Weapon구조체 설정

각 무기의 Weapon구조체를 NewWeapon이라는 배열에 저장

총 쏘는 함수
ChangeAmmo를 통해 탄알 소비, ChangeTemperature을 통해 온도 조정, Print를 통해 현재 총의 상태를 확인

총을 쏘거나, 재장전시 호출되는 함수
Delta값에 따라 현재 총의 총알 개수를 변경
총알의 개수가 0 미만으로 내려갈 경우 "No Ammo"를 출력
총알의 개수가 Max Ammo 이상으로 넘어가지 않도록 설정


총 쏠 때마다 현재 총의 온도를 1도씩 높여주는 함수
함수 마지막에 ChangeHeatState를 호출








overlap을 감지하게 해주는 것
캐릭터가 특정 위치 도달 시 문이 열리거나, 적이 인식하는 등의 이벤트를 구현 가능
overlap 관련 함수 사용 가능

Overlap, Block의 기능을 제공하는 Component
Trigger Box와 마찬가지로 overlap 관련 node 사용 가능

EventGraph에서 begin overlap을 검색하여 노드를 생성 시 2가지 node가 생성될 수 있다.

위의 Add On Component Begin Overlap은 component로 추가한 collision을 선택했을 시 사용 가능하며, 이 component의 overlap시 작동하는 node이다

아래의 Event ActorBeginOverlap은 해당 Actor와의 overlap시 작동하는 node이다


Cast To BP_Character를 이용해 Actor와 overlap이 일어난 Other Actor가 BP_Character일 경우에만 적이 주시하도록 하였음
항상 주시하도록 하기 위해 Event Tick에 구현
Is Valid를 통해 As BP Character가 값이 있는지 없는지 확인
있을 경우에만(Overlap되었을 경우) 캐릭터 방향으로 rotation 하도록 설정
Lerp를 통해 적이 부드럽게 회전하도록 설정
Alpha값에 Delta Seconds를 넣어 매 frame이 지난 시간만큼 회전하도록 설정
결과
결과 영상에서 보이듯이 90도만 돌면 될 것을 갑자기 반대방향으로 270도를 돌아버리는 상황 발생
이는 단순 선형보간만을 하는 Lerp의 문제로, 최단 경로 회전을 보장하지 않아서 발생

Lerp대신 RInterp To 사용