본문 바로가기
Unreal Engine

Unreal Engine 간단한 스크롤 수집 게임 4

by hfgraphic 2025. 11. 13.
반응형

 

캐릭터 움직임 설정 (토크 및 입력 매핑)

 

움직임 로직은 Player Controller에서 처리합니다.

 

1. Player Controller 정리 및 토크(Torque) 노드 준비

  1. Player Controller 블루프린트를 더블 클릭하여 엽니다.
  2. 기존에 있던 이벤트 노드들을 모두 삭제하여 깨끗하게 비웁니다.
  3. **토크(Torque)**를 사용하여 공을 움직일 것입니다. 토크는 물체에 회전을 가해 움직이게 하는 **힘(Force)**입니다.
  4. 그래프에 마우스 오른쪽 버튼을 클릭하고 Torque를 검색합니다.
  • 만약 노드가 보이지 않는다면, 검색창 상단의 Context Sensitive(컨텍스트 민감도) 체크를 해제합니다.
  • 우리는 Add Torque in Radians 노드를 사용할 것입니다. (일반 캐릭터 움직임에는 사용되지 않고, 공처럼 굴러다니는 물체에 적합합니다.)

 

2. 입력 설정: 액시스 매핑(Axis Mapping)

W/A/S/D 키를 사용자가 원하는 대로 변경할 수 있도록, 하드코딩 대신 액시스 매핑을 사용합니다.

  1. **편집(Edit) > 프로젝트 설정(Project Settings)**으로 이동합니다.
  2. 왼쪽 메뉴에서 **입력(Input)**을 선택합니다.
  3. 액시스 매핑(Axis Mapping) 옆의 + 버튼을 클릭하여 새로운 매핑을 추가합니다.
매핑 이름
스케일 (Scale)
역할
Move Forward
W
1.0
정방향 이동
Move Forward
S
-1.0
후진 이동 (음수 스케일)
Move Right
D
1.0
오른쪽 이동
Move Right
A
-1.0
왼쪽 이동 (음수 스케일)

중요: D와 A 키의 스케일을 서로 바꿔야 했습니다. D(오른쪽)에 1.0, A(왼쪽)에 -1.0을 설정해야 예상한 방향대로 움직입니다.

출처 입력

 

3. 블루프린트 인터페이스 설정 (BP Ball 참조 설정)

Player ControllerBPBall의 구성요소(공 스태틱 메시)에 접근하여 토크를 가하려면, 먼저 해당 참조를 받아와야 합니다. 여기서는 블루프린트 인터페이스를 사용하여 통신합니다.

  1. 인터페이스 폴더 생성: 새 폴더를 만들고 이름을 Interfaces로 지정합니다.
  2. 인터페이스 생성: Interfaces 폴더에 마우스 오른쪽 버튼을 클릭하고 블루프린트 > 블루프린트 인터페이스를 생성합니다. 이름을 **Int_Ball**로 지정합니다.
  3. 함수 정의: Int_Ball을 열고 새 함수 이름을 **SetBallRef**로 지정합니다.
  • **출력(Output)**을 추가합니다.
  • 이름: Ball
  • 타입: 오브젝트 참조(Object Reference)
  • 참조 클래스: **BPBall**을 선택합니다.
  1. BPBall에 인터페이스 추가:
  • BPBall 블루프린트를 열고 **클래스 설정(Class Settings)**으로 이동합니다.
  • 인터페이스 섹션에서 Add를 클릭하고 **Int_Ball**을 추가합니다.
  1. BPBall에 참조 설정 구현:
  • BPBall 블루프린트의 내 블루프린트 탭에 나타난 **SetBallRef**를 더블 클릭하여 이벤트를 엽니다.
  • **Return Node**의 Ball 출력 핀에 Self 노드를 연결합니다. (즉, "나 자신이 공 참조다"를 반환합니다.)

 

4. Player Controller 로직 구현

 

이제 Player Controller로 돌아와 움직임 로직을 연결합니다.

 

A. 볼 참조 가져오기 (초기화)

 

  1. Event BeginPlay 노드에서 시작합니다.
  2. Get Player Pawn 노드를 가져와서 연결합니다.
  3. Get Player Pawn 출력 핀에서 Set Ball Ref (인터페이스 메시지)를 호출합니다.
  4. Set Ball Ref 노드의 출력(Ball)을 끌어와 **변수 승격(Promote to Variable)**을 클릭하고 변수 이름을 BallMeshRef 등으로 지정합니다.
  5. 이 변수에서 Get Ball 노드를 호출합니다. (Get Ball은 BPBall 내의 스태틱 메시 컴포넌트 이름입니다.)
  6. Get Ball 노드의 출력 핀도 변수 승격하여 이름을 **BallMeshComponent**로 지정합니다. (이것이 토크의 Target이 됩니다.)

 

B. Move Forward 로직 (W/S)

  1. 그래프에 마우스 오른쪽 버튼을 클릭하고 Move Forward (액시스 이벤트)를 검색하여 추가합니다.
  2. Move Forward의 Axis Value 핀을 * (Multiply - Float * Float)` 노드의 A 핀에 연결합니다.
  • 움직임 속도 조절을 위해 큰 상수 값을 B 핀에 입력합니다. (예: 100000 또는 1000000)
  1. 이 곱셈 결과를 Make Vector 노드의 Y 핀에 연결합니다.
  • Y축이 공의 앞/뒤 방향을 담당합니다. (레벨 뷰포트에서 확인 시)
  1. Make Vector의 출력을 Add Torque in Radians 노드의 Torque 핀에 연결합니다.
  2. BallMeshComponent 변수에서 Get Ball Mesh Component 노드를 가져와 **Add Torque in Radians**의 Target 핀에 연결합니다.
  3. Move Forward의 실행 핀을 Add Torque in Radians의 실행 핀에 연결합니다.

 

C. Move Right 로직 (A/D)

  1. 그래프에 마우스 오른쪽 버튼을 클릭하고 Move Right (액시스 이벤트)를 검색하여 추가합니다.
  2. B 섹션의 노드들(곱셈, Make Vector, Add Torque)을 복사 붙여넣기 합니다.
  3. Move Right의 Axis Value 핀을 곱셈 노드의 A 핀에 연결합니다.
  4. 이 곱셈 결과를 Make Vector 노드의 X 핀에 연결합니다.
  • X축이 공의 좌/우 방향을 담당합니다.
  1. Move Right의 실행 핀을 복사된 Add Torque in Radians의 실행 핀에 연결합니다.

 

5. 물리 시뮬레이션 및 월드 설정

움직임이 작동하려면 공에 물리 시뮬레이션이 활성화되어 있어야 합니다.

  1. BPBall 블루프린트에서 **ball (Sphere Component)**을 선택합니다.
  2. 세부 정보 패널의 Physics 섹션에서 **Simulate Physics**를 체크합니다.
  3. Project Settings > Maps & Modes에서 Default Pawn Class를 **BPBall**로 설정합니다.
  4. 레벨에 Player Start 액터를 배치하여 플레이어가 공중에 떠서 시작하는 버그를 방지합니다.

 

6. 카메라 회전 수정

현재 카메라가 공의 회전을 따라가 이상하게 움직이는 문제가 있습니다.

  1. BPBall 블루프린트에서 Spring Arm을 선택합니다.
  2. 세부 정보 패널의 Camera Settings 아래에 있는 Inherit Pitch/Yaw/Roll 관련 설정을 찾습니다.
  3. Use Pawn Control Rotation 옵션을 체크 해제하고, Spring Arm의 **회전 타입(Rotation Type)**을 **World(월드 기준)**로 설정합니다.

 

7. 최종 검토 및 속도 조정

 

  1. 컴파일 및 저장 후 Play를 클릭합니다.
  2. W/A/S/D를 눌러 공이 예상대로 앞/뒤, 좌/우로 굴러가는지 확인합니다.
  3. 만약 속도가 너무 빠르거나 느리다면, Player Controller의 Move Forward와 Move Right 로직에 있는 곱셈 상수(1000000)를 조정하여 원하는 속도를 맞춥니다. (예: 100000으로 줄여서 테스트)

이제 굴러다니는 공 캐릭터가 성공적으로 설정되었고, 키보드 입력에 반응하여 움직입니다! 다음 단계인 코인 생성으로 넘어가면 될 것 같습니다.

 

반응형