적이 정해진 경로를 순찰하는 이동을 구현해볼 것이다.
우선 적의 이동 애니메이션을 구현하기 위해서 BlendSpace 1D 블프를 만들어 위와 같이 설정하였다.
서있기, 걷기, 뛰기는 애니메이션을 각각 구해서 이동속도에 따라 애니메이션을 블렌드한다.
이동속도를 에디터에 전달하기 위해서 위와 같이 Ground Speed 변수를 셋한다.
애니메이션을 넣고 이동속도 변수를 넣어준다.
순찰 경로를 추가하기 위해서 위와 같이 PatrolTarget과 PatrolTargets를 변수로 추가한다.
또한 적의 AI를 위한 컨트롤러도 추가한다.
AIController에 캐스트하고 MoveTo로 이동하게한다.
이동AI를 보기위해 DrawSphere를 추가하였다.
Target을 위와 같이 추가해주고 두 적의 Target을 추가한 액터로 지정한다.
지정된 Target까지 잘 이동하는 것을 볼 수 있다.
다가갈 거리를 설정하기위해 PatrolRadius를 변수로 추가하고 간단히 거리를 측정하는 InTargetRange 함수를 만들었다.
위와 같이 물체까지의 거리를 측정하는 함수로 작성하고 시각적으로 보기위해 DRAW를 추가하였다.
Tick함수에서 위와 같이 코드를 구성한다.
BeginPlay에서 우선 Target으로 지정한 곳으로 이동하고 이후 매 프레임마다 Target과의 거리를 측정하며 가까워지면 현재 지정된 Target을 제외한 나머지 Target들을 ValidTargets 배열에 저장한다.
이는 다가간 Target을 제외하고 나머지 중에 하나를 지정하기 위함이다.
그렇게 배열 ValidTargets 중에서 하나를 랜덤으로 골라서 MoveTo함수로 이동한다.
즉 여러개를 지정한 Targets들을 랜덤으로 돌아다니게 된다.
위와 같이 여러개의 Target 액터를 바닥에 두었다.
각 Enemy에 Patrol Targets을 3개씩 지정해 주었다.
각각 정해진 순찰지점을 랜덤으로 돌아다니는 것을 볼 수 있다.
'언리얼 - C++ 프로젝트' 카테고리의 다른 글
OpenWorldRpg (15) 적 사망 애니메이션 (0) | 2025.05.20 |
---|---|
OpenWorldRpg (14) 체력바 구현 (0) | 2025.05.20 |
OpenWorldRpg (13) 랜덤 아이템 소환 (0) | 2025.05.18 |
OpenWorldRpg (12) 프랙처모드 (0) | 2025.05.15 |
OpenWorldRpg (11) Hit Reaction (0) | 2025.05.13 |