2024. 7. 28. 01:28ㆍUnreal Engine
일정시간에 한 번씩 적 만들기
저번 시간에 만들었던 "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 다운로드
압축 풀고 폴더 자체를 [Content]에 넣는다. 꼭 [Save All] 버튼을 눌러서 저장한다.
메테리얼 수정
플레이어 모델링 변경
"BP_Player"로 돌아와서, [Viewport]에서 [Cube]의 하위에 모델링을 끌어다 놓는다.
Scale 5.0로 수정
Cube는 [Visible]을 체크 해제한다.
플레이어가 위를 바라보도록 Rotation 수정
적 모델링 교체
'Unreal Engine' 카테고리의 다른 글
[Unreal] 13일차 - C++ 시작, Hello World 출력, 자료형 (0) | 2024.08.01 |
---|---|
[Unreal] 12일차 - 적 모델링 교체, 적끼리 충돌 방지, 트리거 박스, 적이 나를 보면서 오도록 수정, 사운드 추가, 폭발 이펙트, 배경 스크롤 (0) | 2024.07.30 |
[Unreal] 10일차 - 총알 생성과 발사, 충돌과 겹침 (0) | 2024.07.26 |
[Unreal] 9일차 - 총알 생성, 총알 이동, 적 생성, 적이 플레이어 따라다니기 (0) | 2024.07.25 |
[Unreal] 8일차 - 블루프린트 조건문, 반복문, 함수, 상하좌우 이동 (0) | 2024.07.20 |