UE4 Chapter 2. 블루프린트

Date:     Updated:

카테고리:

태그:

인프런에 있는 황대희님의 언리얼 엔진4 3D 횡스크롤 게임 만들기 강의를 듣고 정리한 필기입니다. 😀
언리얼 엔진 공식 문서 https://docs.unrealengine.com/ko/index.html


Chapter 2. 블루프린트

🔔 블루프린트 소개

텍스트 기반인 기존 C++ 같은 스크립트와 달리 노드 기반 비주얼 스크립트

  • 블루프린트를 컴파일 하지 않으면 언리얼 에디터에 반영되지 않는다.

스크립팅

  • 오브젝트(액터)를 움직이게 할 수 있다. 이동도 시킬 수 있고 적이나 아이템을 생성 시킬 수도 있고 적이 죽으면 화면에서 사라지게 할 수도 있다. 그리고 특정 위치에 도달하면 스테이지가 클리어가 된다던지 하는 그런 처리들을 스크립트로 할 수 있다.
  • 기존 텍스트 기반 C++ 스크립팅
    • 텍스트 기반 한줄 한줄 명령어가 실행되는 방식으로 문법이 엄격하고 복잡하다.


🔔 레벨 블루프린트

해당 레벨에서만 동작하는 블루프린트 !

예시 1. 화면에 문자열 출력해보기

  • 레벨 블루 프린트 열기
    • image
    • 레벨 블루 프린트는 다른 레벨에선 동작하지 않고 해당 레벨에서만 동작하게 된다

  • 단축키
    • 우클 👉 우클로 이동할 수 있다.
    • 휠 👉 확대/축소
    • 드래그로 여러 노드 동시 선택 가능
  • 노드 추가
    • Event BeginPlay
      • 게임이 실행되자마자 1회 실행
      • ‘실행’ 버튼을 누른 상태로 드래그 하면 이 노드에 이어서 실행시킬 노드를 추가할 수 있다.
        • image
    • String PrintString
      • 노드에 적힌 메세지를 (화면에선 “Hello World”) 화면에 출력한다.
      • image
  • 컴파일 하고 실행
    • 반드시 컴파일이 먼저 되어야 블루프린트대로 실행된다.

    • 컴파일 하고 게임을 실행하면 게임이 시작되고 난 후 뷰포트 화면에 “Hello World”가 출력되는 것을 볼 수 있다.
      • image

예시 2. 테이블 위아래로 움직여보기

테이블의 Transform을 z 축으로 위쪽으로 100 만큼 증가시켰다가 3 초후 다시 z = 0 으로

  • 테이블이 움직일 수 있도록 static에서 Movable 상태로 바꿔주었다.
  • 테이블을 클릭한 상태에서 블루프린트에서 우클을 누르면 테이블의 레퍼런스를 생성할 수 있는 옵션이 생긴다.
    • image
    • 이렇게 테이블 레퍼런스를 생성해주면 테이블을 블루프린트에서 다룰 수 있게 된다.

image

  • Transformation SetActorLocation
    • 액터의 트랜스폼 위치를 지정한다
    • SetActorLocation 노드의 타겟으로 Table 레퍼런스를 연결해준다.
    • z 축 값을 100 으로 설정한다.
  • Utilities Delay
    • 지연 시간을 둔다
    • Duration 값을 3 으로 설정한다.
    • SetActorLocation 노드의 다음 노드로 연결해주면 타겟인 테이블이 z 축 값을 100으로 3초 유지하게 된다.
  • Physics Set Simulate Physics
    • 물리 효과를 적용한다
    • ✨ 이 노드의 타겟은 Static Mesh Component 에만 적용할 수 있기 때문에 그냥 우클로 노드 추가하려고 하면 검색해도 안나온다.
      • Static Mesh Component인 테이블 레퍼런스 노드를 클릭한 후 테이블에 이어서 노드를 추가해야지만 검색이 된다.
        • image
    • Delay의 다음 노드로서 이어준다.
    • 이제 3 초 지연시간 후에 타겟인 테이블은 물리 효과가 적용되어 중력을 받아 떨어질 것이다.


🔔 클래스 블루프린트

마치 유니티에서의 Prefab과 같다.

프리팹처럼 클래스 블루 프린트를 작성하여 미리 에셋으로 생성해둔 후, 뷰포트에 드래그 앤 드롭하여 오브젝트화 할 수 있다.

  • 뷰포트에 현재 존재하고 있는 액터에 컴포넌트 추가하듯이(유니티에서 C# 스크립트 추가하듯이) 블루프린트를 추가할 수도 있고
  • 프리팹(유니티)을 미리 만들어 두듯이 콘텐츠 브라우저에 블루프린트 클래스를 미리 생성해둘 수도 있다.
  • 클래스 블루프린트 에디터의 디테일 패널과 언리얼 에디터의 디테일 패널은 다르다.
    • 언리얼 에디터의 디테일 패널은 현재 그 레벨에서만 적용이 된다. 따라서 해당 동일한 액터를 다른 레벨에다가 배치를 하게 되면 기존에 디테일 패널에서 값을 설정했던게 다 날아간다.
    • 클래스 블루프린트 에디터의 디테일 패널에서 설정한 사항들은 이 블루프린트를 가진 액터가 다른 레벨에 배치되도 그대로 적용이 된다.

클래스오브젝트별로 동작하게 할 수 있으며 레벨 프린트와 다르게 여러개 생성할 수 있고 다른 레벨에서도 쓸 수 있다.

  • 추가하는 방법
    • 콘텐츠 브라우저에서 우클 - 블루프린트 클래스 - 부모 클래스 선택
      • 부모클래스
        • Actor
          • 레벨에 배치될 수 있음
          • 캐릭터가 아닌 경우에 주로 쓴다. 장애물 같은.
        • Character
          • 레벨에 배치 될 수 있으며 이동도 할 수 있다.
          • 몬스터라던지 캐릭터라던지.
    • 이 방법은 프리팹을 미리 만들어두는 것과 같다.

예제

  • Actor 부모 클래스의 클래스 블루프린트를 추가해주자.
    • 이름은 “CubeBP”로 함
  • 더블 클릭해서 블루프린트 창을 띄운다.
  • 큐브 컴포넌트를 추가해서 큐브 모양을 입힌다.
    • 꼭 큐브 아니라도 디테일 창의 Static Mesh 에서 여러가지 모양의 컴포넌트를 선택할 수 있다.
      • image
  • 저장하고 “CubeBP” 이걸 뷰포트에 드래그 하여 배치할 수 있다.
  • “CubeBP”의 블루프린트 창에서 상단에 이벤트 그래프 창을 선택한다.
    • 클래스 블루프린트 같은 경우에는 다음과 같은 이벤트들이 미리 생성이 되어 있음
      • image
        • BeginPlay 👉 게임이 시작되자마자 발생하는 이벤트
        • ActorBeginOverlap 👉 오브젝트끼리 겹쳤을 때, 충돌했을 때 발생하는 이벤트
        • Event Tick 👉 계속 매 프레임 호출이 된다. 마치 유니티의 Update 함수
  • Event Tick 이벤트에 Print String 노드를 연결해준다.
    • image
  • 컴파일하고 플레이하면 “Hello”가 뷰포트 화면에 마구마구 엄청 많이 출력되는 것을 확인할 수 있다.
  • Event Tick 이벤트에 AddActorWorldRotation 노드를 연결해준다.
    • 해당 큐브 클래스 레퍼런스를 타겟으로 하고 z 축으로 1 도로 설정하면 게속해서 큐브가 1도씩 z 축으로 회전하는 것을 볼 수 있다.
      • image


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

UE4 Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기