Unreal Engine: Ultimate Survival Horror Course
블백보드에 Boolean 타입의 killHiddenPlayer와 Rotator 타입의 targetRotation 키를 추가한다.
BPI_PlayerHiding 인터페이스를 생성한다.
숨기 전에 AI가 플레이어를 보았는지 확인할 DidEnemySee 인터페이스 함수를 생성하고 입력을 추가한다.
AIC_Classic에 BPI_PlayerHiding 인터페이스를 추가하고 DidEnemySee 인터페이스 함수를 구현한다.
BP_HideActor의 Interact 인터페이스 함수에서 플레이어가 숨을 때 실행되는 부분 앞에 AI가 플레이어를 봤는지 확인하는 부분을 추가한다.
Cast To Class 노드는 Get Actor Of Class에 Class를 전달하기 위해 사용된 것이다.
- Class에 AIC_Classic을 지정한다.
Get Actor Of Class는 처음 찾은 하나의 액터만 가져온다.
- Get All Actors Of Class는 클래스에 해당하는 월드의 모든 액터를 TArray로 가져온다.
BP_HideActor에 AILocation Arrow를 추가한다.
- 플레이어가 숨었을 때 AI가 도착할 목적지이다.
BP_HideActor_Locker에서 AILocation의 위치를 설정한다.
BTT_RotateAI 태스크를 추가한다.
- Task - Tick Interval - Interval에서 값을 설정하면 Tick 실행 주기를 설정할 수 있다. (음수일 경우 매 Tick마다 실행된다.)
- AI를 서서히 회전시키기 위해 Event Receive Tick AI 이벤트를 사용한다. (설정한 Tick마다 실행된다.)
BP_HideActor에 EnemyFound 이벤트를 생성한다.
BP_HideActor_Locker의 Interact 인터페이스 함수에서 문 여는 부분을 OpenDoor 이벤트로 만든다.
EnemyFound 이벤트를 오버라이드한다.
- Static Mesh - Set Collision Enabled 노드를 이용해 Collision 설정을 변경할 수 있다.
AIC_Classic에 EnemyFound 함수를 실행하는 PullOutOfHiding 이벤트를 추가한다.
BTT_PullOutOfHiding 태스크를 생성한다.
BPI_PlayerHiding 인터페이스에 LeftHidingSpot 인터페이스 함수를 추가한다.
숨기가 끝난 이후에 실행되는 BP_HideActor의 FinishedMoving 이벤트에 AI가 숨은 위치에서 떠나도록 하는 LeftHidingSpot (Message) 인터페이스 함수를 실행하는 부분을 추가한다.
AIC_Classic에서 LeftHidingSpot 인터페이스 함수를 구현한다.
BT_Classic Behavior Tree에 killHiddenPlayer 값에 따라 숨은 플레이어를 찾아내는 부분을 추가한다.
숨은 플레이어를 찾아 공격하는 기능을 구현했다.
'Unreal Engine > Ultimate Survival Horror Course' 카테고리의 다른 글
완강 및 후기 (0) | 2023.02.24 |
---|---|
메인 메뉴 만들기 (0) | 2023.02.24 |
AI 문 여닫기 구현 (0) | 2023.02.24 |
다시하기 구현 (0) | 2023.02.24 |
AI 공격하기 구현 (0) | 2023.02.23 |