게임 시작해요 언리얼 3

정선호·2023년 6월 2일
0

Unreal Study

목록 보기
8/13

3. 블루프린트를 활용한 움직이는 장치 제작

강의 영상

블루프린트

공식 문서

블루프린트는 UE에서 제공하는 노드 기반 비주얼 스크립터로 다음과 같이 유용하게 사용할 수 있다

  • 다양한 기능을 가진 액터들이 조합된 것을 하나의 액터로 효과적으로 관리
  • 스스로 움직이는 액터를 스크립팅을 통해 구현할 수 있음

블루프린트를 생성에 해당 파일로 진입하면 다음과 같은 블루프린트 편집 창이 뜬다.

두 가지 기능을 갖고 있기 때문에 블루프린트를 저장할 때에는 컴파일버튼과 저장버튼을 둘 다 눌러 저장해준다.

블루프린트로 액터 관리

루트 오브젝트의 디테일 패널에서 블루프린트 생성버튼을 이용해 오브젝트들을 하나의 오브젝트로서 관리할 수 있다.

언리얼 엔진은 다양한 기능을 제공하는데, 이 기능은 '컴포넌트'를 통해서 제공하고 있다
개발자는 수많은 컴포넌트들 중 내가 원하는 기능을 가진 컴포넌트를 추가함으로써 기능을 추가할 수 있다.

컴포넌트 창의 첫 번째 오브젝트는 전체 액터를 의미하는 것으로, 전체 액터에 대한 기본적인 설정을 정할 수 있다. (액터를 대표하는 태그를 설정하는 작업 등)
실제적인 블루프린트 구조는 루트 컴포넌트에서부터 작성하게 된다.

지금껏 강의에서 사용된 스태틱 메시들은 스태틱 메시 컴포넌트를 루트로 갖고 있던 액터에 불과했다.

  • 에셋을 화면 상에 보여주고, 플레이어가 위치로 이동하지 못하도록 막는 역할을 하는 것은 스태틱 메시 컴포넌트가 제공하는 기능이다.
  • 액터는 그것을 둘러쌓아서 포장해주는 단순한 규격일 뿐, 실제 기능은 컴포넌트가 제공

루트 컴포넌트는 만들어지는 블루프린트 액터의 모체 역할을 한다. 이후에 추가하는 컴포넌트들은 모두 루트 컴포넌트의 자식이 된다.

블루프린트로 움직이는 액터 만들기

사용할 메시를 블루프린트로 만들고 액터를 움직이는 액터로 만들기 위해 디테일 패널의 트랜스폼 - 모빌리티무버블로 설정해준다.

또한 메시의 피벗과 정면 방향을 알기 위해 보조 컴포넌트인 화살표 컴포넌트를 추가해준다.
화살표 컴포넌트는 게임 빌드 시에 보이는 부분은 사라지지만 트랜스폼은 남아있기 때문에, 화살표의 트랜스폼 로직을 이용해 작성한 스크립트는 빌드 후에도 정상 작동된다.

블루프린트의 이벤트그래프에서 비주얼 스크립팅을 수행할 수 있다.
이벤트그래프의 노드는 이벤트 노드명령어 노드가 있다.

  • 이벤트 노드는 어떤 사건이 발생될 때 활성화되는 시작점 노드이다
  • 명령어 노드는 이벤트 노드 뒤에 붙어 이벤트가 활성화되었을 때 어떠한 명령을 처리할 지 결정하는 노드이다.

블루프린트는 노드와 노드 사이를 실행선으로 연결하여 만들어진 이벤트 플로우를 실행하여 스크립트를 러닝한다.
실행선은 양쪽 노드의 시작점과 끝점을 드래그로 연결하여 추가할 수 있고, 실행선을 제거하려면 Alt + 마우스 왼쪽 버튼으로 제거를 원하는 선을 클릭하면 된다.

타임라인

이벤트그래프 상에서 시간에 따른 값 변화를 전달해줄 수 있는 타임라인 노드를 추가할 수 있다.
타임라인 노드를 더블클릭하여 상세 타임라인 설정에 진입할 수 있다.

  • +트랙버튼으로 트랙을 추가할 수 있다. 트랙은 원하는 값의 시간에 따른 변화를 눈으로 보여주고 편집할 수 있게 해주는 창이다
  • 트랙에 우클릭 - 키 추가 혹은 Shift + 좌클릭으로 노드를 추가할 수 있다. 노드는 선택 시 세부 값을 조정할 수 있는 디테일이 뜨게 된다
  • 노드를 선택 후 우클릭하여 노드간의 선형 보간법을 설정할 수 있다
  • 루프 기능 등 추가적인 기능을 더하여 완성한다

블루프린트 코드

작성한 블루프린트 코드를 해석하면 다음과 같다.

  1. BeginPlay이벤트가 활성화될 시, 즉 플레이를 시작할 때 명령들이 활성화된다.
  2. 우선 현재 액터의 위치값을 가져와 변수화(Set)하여 '최초 위치'라는 이름으로 저장한다.
  3. 타임라인 이동 그래프를 시작한다. 이후 타임라인은 매 틱마다 Update되며 Set Action Location 명령을 실행한다.
  4. 타임라인에 미리 설정해둔 실수 값 변화를 가져와 원하는 오프셋만큼 곱해준다.
    위에서는 실수 값 변화를 0 ~ 1로, 오프셋을 800으로 설정했으므로 최종적으로는 0 ~ 800의 값 변화를 가진다.
  5. 액터에 붙여놓은 Arrow컴포넌트의 정면 벡터를 가져와 변화되는 값을 곱해준다.
    정면 벡터의 크기는 1이므로 곱해진 벡터의 값은 0 ~ 800의 값 변화를 가진다.
  6. '최초 위치'를 가져와 최종적으로 나온 벡터값을 더해줘 새로운 위치값을 가져온다
  7. Set Action Location 명령으로 액터의 위치를 다시 설정해준다

블루프린트 내에 임의의 변수를 추가할 수 있다

  1. 변수로 승격시킬 값을 드래그로 빼오거나, 내 블루프린트 창의 변수탭에서 +버튼을 눌러 변수를 만들어준다.
  2. 만들어진 변수 노드를 클릭하여 디테일에서 세부 설정을 조절해줄 수 있다.
    • 블루프린트 외부의 뷰포트 디테일 창에서 해당 값을 변경하고 싶으면 인스턴스 편집기능을 체크한다

버텍스 스니핑

스태틱 메시를 다른 스태틱 메시와 인접하게 추가할 때 버텍스 스내핑 기술을 이용해 위치를 손쉽게 잡을 수 있다.

버텍스 스내핑은 V버튼을 누른 채로 이동을 원하는 오브젝트의 기즈모 정점을 잡고 드래그하여 사용할 수 있다.

버텍스 스내핑 사용 시 주변 메시들의 버텍스 점이 표시되며 이 점에 가까이 드래그하면 이동하는 메시의 피벗이 정점과 일치하게끔 이동된다.


QnA

캐릭터 카메라

언리얼에서 기본으로 제공하는 캐릭터는 카메라와 함께 블루프린트로 묶여있다.

캐릭터 블루프린트를 찾아 들어가면 컴포넌트 창에서 CameraBoom을 볼 수 있다. 이는 우리가 사용하는 셀카봉처럼 카메라를 지지해주는 역할을 한다.

  • CameraBoom의 다양한 값들을 이용해 원하는 카메라를 만들 수 있다.
    • ex) 카메라 콜리전을 켜서 카메라가 스태틱 메시에 충돌이 나지 않게 당기게 할 수 있다

만약 어떠한 물체가 너무 빠르게 움직여서 카메라 콜리전이 적용되는 게 손해인 상황이 오면 다음과 같이 해결할 수 있다

1.해당 스태틱 메시의 디테일 창에서 콜리전 - 콜리전 프리셋Custom...으로 변경한다.
2. 콜리전 반응 - 트레이스 반응 - 카메라 콜리전 설정을 무시로 체크한다.

이러한 방식으로 카메라 뿐 아니라 여러 메시에 관한 콜리전 설정을 할 수 있다.

에셋 명명 규칙

참고 예시

UE 협업 시 각 에셋 종류에 따른 명명 규칙이 불문율처럼 내려온다
이는 회사, 팀 등에 따라 모두 달라지므로 단체의 규칙에 맞추자

오브젝트 원 운동

블루프린트의 컴포넌트에 회전 이동 컴포넌트를 추가하여 구현할 수 있다

profile
학습한 내용을 빠르게 다시 찾기 위한 저장소

0개의 댓글