본문 바로가기

블루프린팅/2. 블루프린트 프로그래밍

[2.블루프린트연습] 캐릭터 따라다니게하기

현재 우리는 삼인칭캐릭터 템플릿을 사용하고 있다. 삼인칭텔플릿은 카메라가 뒤에서 따라다니고 일인칭은 카메라가 캐릭터 눈쯤에 위치해 있다. 실제 일인칭템플릿으로 프로젝트를 만들면 몸통과 다리가 없는 캐릭터가 들어있다. 보이지 않으므로.

이러한 효과는 레벨을 찍는 카메라의 위치 설정을 캐릭터의 어떤 부분으로 할것인지에 따라 쉽게 변경이 가능하다.

C를 누르면 카메라를 이동시키고 싶었는데 아직 키입력 매핑 방법을 잘 몰라 그냥 시작시 퀘스천마크가 플레이어 머리위를 따라다니는 것으로 대치하려고 한다.

우선 컨텐트드로워에서 +Add를 누르고 블루프린트클래스>Actor를 만들고 이름을 BP_QMark로 한다.

에디터가 열리면 컴포넌츠 +Add를 누르고 StaticMesh를 추가한다.  디테일에서 StaticMesh를 EditHelp로 선택한다. V5.2에서는 삼인칭템플릿에서는 기본으로 들어있다. 머터리얼도 예쁜걸로 대충 골라보자

이벤트그래프를 선택하고 빈곳에 우클릭후 Get Actor Location, Set Actor Location을 추가하고 다음과 같이 연결한다.

자기 위치를 자기 위치에 세팅하니 변화가 없다. MyBluprint에서 Variables에서 +를 눌러 Target으로 이름을 바꾸고 타입을 BP_ThirdPersonCharacter>Object로 한다. 디테일에서 Instance Editable을 체크한다.

방금만든 Target변수를 Get으로 끌어다 놓고 다음과 같이 연결해준다.

이제 다른 객체의 위치를 자신의 위치로 설정하게 되었다. 하지만 Target의 참조를 설정해줘야한다. 컴파일 세임브하고 레벨에디터로 돌아가 방금 저장한 BP_QMark를 레벨 뷰포트로 끌어다 놓는다 위치는 중요하지 않다. 

BP_QMark를 선택하고 Detail Default의 Target 오른쪽 연필처럼 생긴 픽툴을 클릭한후 플레이어 캐릭터를 찍어주면 자동으로 참조가 설정된다. 풀다운메뉴에서 열심히 찾으셔도 된다.

플레이후 클릭후 ALT+드래그로 각도를 바꿔보면 퀘스천마크가 캐릭터와 겹쳐 있다 ㅎㅎ. 조금 위로 올려주겠다. 그리고 캐릭터를 움직여 보면 금방 분리된다 ㅎㅎ 이것도 수정해 보겠다

BP_QMark를 선택하고 오른쪽 Edit BP_QMark를 선택한다.

에디터가 열리면 EventBeingPlay와의 연결을 끊고 EventTick과 연결해준다 이러면 BP_QMark가 계속 따라다닌다

이제 약간 위로 올려보겠다. Z측만 올리면 되니 New Location을 우클릭후 Split Sturct Pin을 해준다. 반대측도 같이 해준다.

우클릭후 +를 입력해서 Add노드를 추가해주고 다음과 같이 연결한다. Add아래쪽 값은 100으로 설정한다.

컴파일 세이브후 실행해보면 머리위로 잘 올라가 있고 잘 따라다니는데 캐릭터가 돌면 같이 돌지 않는다 

다시 BP_QMark의 에디터로 들어가 Get Actor Rotation, Set Actor Rotation을 추가해준다

플레이어 캐릭터의 Rotation을 카피해야 하므로 Target을 연결해주고 다음과 같이 연결해준다.

Set Actor Rotation도 매프레임 갱신되야 하므로 다음과 같이 Location의 실행핀을 연결해준다.

컴파일 세이브후 실행해보면 이제 캐릭터의 방향과 같이 회전한다.

지금 배운 테크닉으로 카메라가 캐릭터를 따라다니게 하면 삼인칭, 일인칭 시점 게임을 쉽게 만들수 있다.

실제 우리가 만든 삼인칭시점 텔플릿은 이미 카메라가 캐릭터의 자식으로 추가되어 있어 자동으로 따라다닌다. 버튼을 눌러 시점의 변화를 주려고 했는데 아직 공력이 부족해서 다음에 공부하기로 약속드립니다.

 

언리얼 블루프린트를 공부해보니 어렵지는 않지만 방대한 기능을 허접한 매뉴얼로 배워야 한다는 단점이 있다. 다행히 유니티를 공부했던 기본으로 있어야할 기능을 찾아서 추가해서 대충 연결하다 보니 되기는 한다.그러나 스크래치 GUI프로그램도 마찬가지로 이런 종류의 프로그램은 조금만 복잡해지면 비효율적이다.솔직히 초보자들도 배우기 어렵다고 생각한다. 단순히 For문만으로 프로그래밍을 할 수는 없다. 그냥 유니티처럼 Text 스크립트 프로그램이 편해보인다.

지금처럼 아주 단순한 기능을 실현하기 위해서는 편리한 면도 있기는 하지만 여기까지 한달이나 걸렸다는게 블러거의 실력이 모자른건지 자료가 부족한건지 잘 모르겠다. 대부분의 교재는 무작정 예제를 시작하는데 따라하다보면 원리를 모르니 재미가 없었는데 스스로 해보니 이제좀 알것 같다. 그리고 대부분의 교재에서 이런 기초적인 프로그램을 가르쳐주지 않는데 아마 그것만으로도 1000페이지의 책이 될것 같다. 윤성후 C,C++책만해도 2권이니까. 

프로그래머의 길이 쉽지만 않은것 같다. 스스로 배울수 있는 능력이 내게 있는건지 의심스러워진다. ㅠㅠ.