블루프린트

Taegang Yun·2023년 7월 19일
0

게임 프로젝트 및 에디터

프로젝트 폴더

  • Config : 게임 프로젝트의 설정 값 보관. 필수 보관해야 함.
  • Content : 에셋 관리 공간. 콘텐츠 브라우저 그 공간.
  • Intermediate : 임시 파일 저장곤간. 제거해도 에디터에 의해 자동 재생성된다.
  • Saved : 작업 중에 생성된 결과물 저장. 제거해도 게임 프로젝트에는 영향 없음.
  • 프로젝트이름.uproject : Json형식의 텍스트 파일로 어떤 버전의 언리얼 에디터를 열지에 대한 정보가 적혀있으며 언리얼 에디터와 연결되어 해당 파일이 있는 프로젝트 폴더가 에디터로 불러와진다.

용어

  • 레벨 : 플레이어가 돌아다닐 수 잇는 공간
  • 액터 : 언리얼 엔진에서는 오브젝트를 액터라고 한다.
  • 메시 : Mesh, 언리얼 엔진에서는 어떤 3D 모델을 메시라고 한다.

블루프린트

텍스트 기반인 기존 C++ 같은 스크립트와 다르게 노드 기반 비주얼 스크립트

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

레벨 블루프린트

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

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

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

  • Event BeginPlay

    • 게임이 실행되자마다 1회 실행
    • '실행' 버튼을 누른 상태로 드래그 하면 이 노드에 이어서 실행시킬 노드를 추가할 수 있다.
  • String PrintString

    • 노드에 적힌 메세지를 화면에 출력한다.

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

  • 테이블이 움직일 수 있도록 static에서 Movable 상태로 바꾸기.

  • 테이블을 크릭한 상태에서 블루프린트에서 우클을 누르면 테이블의 레퍼런스를 생성할 수 있는 옵션이 생긴다.

  • 테이블 레퍼런스를 생성해주면 테이블을 블루프린트에서 다룰 수 있게 된다.

  • Transformation SetActorLocation

    • 액터의 트랜스폼 위치를 지정한다.
    • SetActorLocation 노드의 타겟으로 Table 레퍼런스를 연결해준다.
    • z 축 값을 100으로 설정한다.
  • Utilities Delay

    • 지연 시간을 둔다
    • Duration 값을 3 으로 설정한다.
    • SetActorLocation 노드의 다음 노드로 연결해주면 타겟인 테이블이 z 축값을 100으로 3초 유지하게 된다.
  • Physics SetSimulatePhysics

    • 물리 효과를 적용한다.
    • 이 노드의 타겟은 Static Mesh Component 에만 적용할 수 있기 때문에 꼭 Static Mesh Component인 테이블 레퍼런스 노드를 클릭한 후 테이블에 이어서 노드를 추가해지만 검색이 된다.
    • Delay 의 다음 노드로서 이어준다.
    • 3초 지연시간 후에 테이블을 물리 효과가 적용되어 중력을 받아 떨어질 것이다.

클래스 블루프린트

마치 Unity의 Prefab 과 같다

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

  • 뷰포트에 현재 존재하고 있는 액터에 컴포넌트 추가하듯이(Unity에서 C# 스크립트 추가하듯) 블루프린트를 추가할 수도 있고
  • 프리팹을 미리 만들어 두듯이 콘텐츠 브라우저에 블루프린트 클래스를 미리 생성해둘 수 있다.
  • 클래스 블루프린트 에디터의 디테일 패널과 언리얼 에디터의 디테일 패널은 다르다.
    • 언리얼 에디터의 디테일 패널은 현재 그 레벨에서만 적용이 된다.

예시 1 A키 누르는 순간 (Pressed) 마다 큐브 이동시키기

  • MoveCubeBP 큐브에의 블루프린트 스크립트니까, self는 이 MoveCubeBP 큐브가 된다.

  • 기본적으로는 언리얼은 액터가 Input을 받아들이는 게 비활성화 되어있음.

    • BeginPlay 실행 핀에 Enable Input을 연결. 게임이 시작되면 큐브의 입력이 활성화된다.

    • GetPlayerController는 플레이어 컨트롤러를 리턴하는데, 이를 Enable Input의 Player Controller 핀에 연결해준다.

    • 플레이어 컨트롤러는 플레이어에게서 받은 입력을 어떤 동작으로 변환하는 함수성을 구현하는, 사람 플레이어의 의지를 ㅌ나타낸다.

    • SetActorLocation

    • GetActorLocation

      예시 2 플레이어 캐릭터

      Character는 이동할 수 있고 충돌 처리도 된다.

      AddMovementInput은 캐릭터같은 Pawn을 이동시키는 노드이다.

    뷰포트에 카메라 추가

  • 카메라가 계속 큐브를 따라다니는 이유큰 큐브의 컴포넌트로 설정해놔서 이다.

  • 언리얼은 현재 빙의된 폰의 1인칭 카메라를 자동으로 생성해준다.따라서 이 카메라를 쓰지 않고 내가 설정한 뷰포트 카메라를 쓰도록 해야 한다.

  • Set View Target with Blend

    • PlayerController 타입의 클래스로, 현재의 카메라로부터 다른 카메라로 뷰를 변경하고자 할 때 사용하는 노드.
    • 타겟 - GetPlayerController 노드로 Player Index 0 (로컬 플레이어) 에 대한 플레이어 컨트롤러를 가져와 연결
    • New View Target - 변경하고자 하는 뷰를 찍는 카메라를 여기에 연결해주어야 한다.
      • Cam 이라는 변수를 추가하고 변수의 유형을 Camera Actor 로 변경해준다.
      • 눈 모양을 클릭하여 눈을 떠주는 모양으로 바꿔준다. (Public 이 되어 언리얼 에디터 상에서 슬롯 생성)
      • 컴파일 후 Character의 디테일 패널에서 기본 - Cam 변수에 카메라 선택해서 할당.
profile
언젠간 전문가가 되겠지

2개의 댓글

comment-user-thumbnail
2023년 7월 19일

글을 읽는 동안 많은 걸 배울 수 있었습니다.

1개의 답글

관련 채용 정보