[Unreal] 11일차 - 일정시간에 한 번씩 적 만들기, 적이 플레이어 따라오게 설정, 초반 방향만 따라오게 설정, 확률 추가, 플레이어 모델링 교체

2024. 7. 28. 01:28Unreal Engine

728x90
반응형

일정시간에 한 번씩 적 만들기

저번 시간에 만들었던 "BP_EnemyGOD"의 [Event Graph]를 편집한다.

Variables에 "CreateTime", "CurrentTime" 추가, 시간이 흐르도록 노드를 배치했다.

 

 

경과 시간이 생성 시간을 초과했다면,

 

 

타이머를 0으로 다시 Set 한다.

 

 

그리고 "BP_Enemy"를 나의 Location에 Spawn한다.

 

 

"BP_EnemyGOD"를 Viewport에 배치하고 플레이하면 2초마다 적이 생성된다.

 

 

하지만 실행을 끝내면 오류가 난다. Target에 대한 오류. Target을 동적으로 설정해주어야 한다.

 

 

"BP_Enemy" 블루프린트에서 수정한다.

 

 

정상적으로 플레이가 되면 오류가 뜨지 않는다.

하지만 플레이어가 죽으면 다시 오류가 뜬다. 플레이어가 죽으면 따라다닐 타겟이 없기 때문.

 

 

타겟이 있는지 없는지를 확인해서 있으면 타겟에게, 없으면 아래로 떨어지도록 설정한다.

타겟이 유효하면, 원래 타겟으로 따라오게, 유효하지 않다면 Z 방향 -1 으로 떨어지도록 설정했다. 이제 플레이어가 죽어도 오류가 뜨지 않는다.

 

 

여기까지의 "BP_Enemy" 블루프린트 전체 샷

 

 


 

 

적이 플레이어를 계속 따라오지 않고 초기 방향만 유지하도록 수정

[Event Tick] 노드를 다른 노드를 거치게 하지 않고 바로 [Set Actor Location]에 연결한다.

 

 

유효성 체크를 Vector를 계산하는 노드들과 연결한다.

 

 

초기 방향대로만 오는 것을 볼 수 있다.

 

 

결론은, Vector 계산을 시작할 때만 해주느냐, [Event Tick]에 연결되어서 계속 계산되느냐의 차이이다.

 

 

Function으로 만들고 싶은 노드를 선택해서 마우스 우클릭 후 [Collapse to Function]을 누르면 하나의 노드로 Function이 만들어진다. 해당 Function을 더블클릭하면 내부를 볼 수 있다.

 

 

시작할 때 방향이 설정되는 블루프린트

 

 

플레이어를 계속 따라오는 블루프린트.

 

 


 

 

30%는 타겟 방향으로, 70%는 아래로만 이동하도록 확률 설정

"BP_Enemy"의 [Find Direction] 노드 진입.

 

 

Random 넘버가 1~10 중 3보다 작거나 같을 때이기 때문에 30% 확률로 True가 출력된다.

 

 


 

 

실제 데이터 사용하기

SpaceShip.zip 다운로드

 

lifeunreal5/자료실/2장/SpaceShip.zip at main · araxrlab/lifeunreal5

인생 언리얼 5 프로젝트 교과서 . Contribute to araxrlab/lifeunreal5 development by creating an account on GitHub.

github.com

 

 

압축 풀고 폴더 자체를 [Content]에 넣는다. 꼭 [Save All] 버튼을 눌러서 저장한다.

 

 

메테리얼 수정

 

 

플레이어 모델링 변경

"BP_Player"로 돌아와서, [Viewport]에서 [Cube]의 하위에 모델링을 끌어다 놓는다.

 

 

Scale 5.0로 수정

 

 

Cube는 [Visible]을 체크 해제한다.

 

 

플레이어가 위를 바라보도록 Rotation 수정

 

 

적 모델링 교체

 

lifeunreal5/자료실/2장/Drone.zip at main · araxrlab/lifeunreal5

인생 언리얼 5 프로젝트 교과서 . Contribute to araxrlab/lifeunreal5 development by creating an account on GitHub.

github.com

728x90
반응형