UE4 Chapter 3-1. 플레이어 캐릭터 : 기본 이동

Date:     Updated:

카테고리:

태그:

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


Chapter 3. 플레이어 캐릭터

🔔 프로젝트 생성

  • 레벨은 Default로
  • 큐브를 추가해준다.
  • 레벨 저장하기
    • 이름은 “MoveCubeActor”


🔔 기본 이동

Actor는 기본적으로 static 한 움직임이 없는 고정된 메시이다. 기본 구조물로 많이 사용 됨.

블루프린트로 큐브 이동시키기

  • 큐브 액터를 static 에서 Movable로 바꿔주어야 이동 가능하다는 것에 주의하기

큐브에 블루프린트 스크립트 추가

  • 디테일 창에서 블루프린트(클래스 블루프린트) 스크립트를 큐브에 추가할 수 있다.
    • image
    • “MoveCubeBP” 라는 이름의 블루프린트를 추가


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

“MoveCubeBP” 큐브에 추가한 블루프린트의 이벤트 그래프에서 큐브가 이동하게끔 스크립팅하기!

  • “MoveCubeBP” 큐브에 추가한 블루프린트 스크립팅이니, self는 이 “MoveCubeBP” 큐브가 된다.

image

  • 액터 Input 활성화하기
    • image
      • 기본적인 액터 입력 활성화 방법이다.
    • 기본적으로 언리얼은 액터가 Input을 받아들이는게 비활성화 되어있는 상태라 키보드 입력을 받으려면 이를 활성화 시켜주어야 한다.
      • BeginPlay 실행 핀에 Enable Input(Input 활성화)를 연결해준다.
        • 게임이 시작되면 이 “MoveCubeBP” 큐브의 입력이 활성화된다.
      • Get Player Controller는 플레이어 컨트롤러를 리턴하는데 이를 Enable Input의 Player Controller 핀에 연결해준다.
        • 플레이어 컨트롤러는 플레이어에게서 받은 입력을 어떤 동작으로 변환하는 함수성을 구현하는, 사람 플레이어의 의지를 나타낸다.
  • A키 누르는 순간맏 y 축으로 -2 씩 큐브 이동시키기
    • A키에 대한 레퍼런스 노드 추가
      • 우클 - Input - 키보드 이벤트 - A 선택
    • A키의 Pressed 핀에 Set Actor Location 노드 추가
      • 이제 A키를 누르면 New Location 위치로 이동하게 될 것이다.
    • GetActorLocation(현재 위치)을 추가하고 이의 리턴 핀을 Vector + Vector 노드에 연결한다.
      • Vector + Vector 노드에 Y 값에 -2.0 을 입력한다.
      • 현재의 위치에서 (0, -2, 0)이 더해진 값(Vector) 결과Set Actor LocationNew Location 핀에 연결해준다.
        • 현재 위치에서 (0, -2, 0)이 더해진 결과인 위치로 A키를 누를 때마다 타겟인 self (“MoveCubeBP”)가 그 위치로 이동하게 된다.


A, D 키를 누르는 동안 큐브 이동시키기

누르는 순간과 떼는 순간은 언리얼에서 지원해주는데 누르는 동안은 지원해주지 않음. 따라서 직접 Axis를 추가해야 한다.

  • Axis Mapping 추가하기
    • 블루프린트창 - 편집 - 프로젝트 세팅 - 입력 - Axis Mappings + 추가 버튼 누르기.
      • 다음과 같이 추가 (이름은 “LeftRight”)
        • image
      • A 키를 누르면 Axis Value 로 -1.0 을 리턴하고
      • D 키를 누르면 Axis Value 로 1.0 을 리턴하고
      • 아무 키도 누르지 않으면 Axis Value 는 0.0을 리턴하는
      • “LeftRight” 이벤트를 이제 노드로 추가할 수 있다!

image

  • 위에서 추가한 LeftRight 이벤트 노드를 추가한다.
    • 이런 Axix Mapping 이벤트 노드는 매 프레임마다 실행이 된다
      • 따라서 ‘누르는 동안’ 이런거 구현하기 좋다.
    • LeftRight 노드의 실행핀과 SetActorLocation 실행핀을 연결한다.
  • LeftRight 이벤트 노드는 매 프레임마다 실행이 되며 아무런 입력이 들어오지 않을 때는 0.0 을 리턴하고 A 입력이 들어오면 -1.0, D 입력이 들어오면 1.0을 리턴한다.
  • Vecotr * float 노드를 추가하여
    • Vecotr * float 노드의 float인 B value 핀과 LeftRight의 Axis Value (1.0 혹은 0.0 혹은 -1.0 셋 중 하나의 float 값을 가짐) 핀을 연결해준다.
    • A value 로 (0, 5, 0)을 입력해주면 이제 매 프레임마다 Vecotr3(0, 5, 0) 에 float인 Axix Value 가 곱해진 결과 값이 리턴되게 된다.
      • 매프레임마다 아무 키도 누르지 않으면 (0, 0, 0)
      • 매프레임마다 A 키를 누르는 상태면 (0, -5, 0)
      • 매프레임마다 D 키를 누르는 상태면 (0, 5, 0)
  • Vector + Vector 노드의 A value 핀으로 현재 위치를 리턴하는 GetActorLocation 리턴 값을 연결해주고 B value 핀으로 Vecotr * float 노드의 결과 리턴 핀을 연결해준다.
    • 매프레임마다 아무 키도 누르지 않으면 현재위치 + (0, 0, 0)
    • 매프레임마다 A 키를 누르는 상태면 현재위치 + (0, -5, 0)
    • 매프레임마다 D 키를 누르는 상태면 현재위치 + (0, 5, 0)
  • 최종적인 Vector + Vector 노드 리턴 핀을 SetActorLocation의 New Location 핀에 연결해주면 해당 위치로 큐브가 이동하게 된다.


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

맨 위로 이동하기

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

댓글 남기기