애니메이션 에셋 다운 받은 것에 뒤로 걷기, 좌우로 걷기, 앞으로 가면서 왼쪽 등의 애니메이션이 있기에 적용 해보기위해 

기획을 해보았다. 보통 다크소울3, 엘든링에서 다운받은 에셋과의 동작이 비슷해서 엘든링과 같은 움직임을 구현 해보려한다.


목표

 

  • WASD → 이동 방향
  • 마우스 → 시야 방향(Control Rotation)
  • 캐릭터는 항상 정면을 보지 않아도 이동 가능 (Strafing 이동)
  • Attack(공격) 시 캐릭터 몸이 카메라 방향을 향함
  • Move Direction ↔ Look Direction 분리

구현

BP_Knight 로 캐릭터 블루프린트 생성

 

1) CharacterMovement 설정 변경

엘든링과 같이 시야와 캐릭터의 이동을 분리하기 위해서는 다음과 같은 설정이 필요하다.

 

CharacterMovement 컴포넌트

옵션
Orient Rotation to Movement ✔ 체크(ON)
Use Controller Rotation Yaw ❌ 해제(OFF)
Rotation Rate → Yaw 540(기본) 또는 720 정도 추천

 

 

2) 카메라는 캐릭터와 독립 시키기

 

SpringArm 설정

옵션
Use Pawn Control Rotation ✔ ON
Inherit Pitch/Yaw/Roll ✔ ON
Do Collision Test ON (옵션)

 

Camera 설정

옵션
Use Pawn Control Rotation ❌ OFF

 

3) 이동 (WASD) 구현

캐릭터는 시야와 상관없이 움직이게 하기.

 

Blueprints

 

4) 캐릭터 몸 회전 (이동 방향으로 회전)

 

위에서 설정한
✔ Orient Rotation to Movement = ON

이 부분이 자동 처리함.

  • W → 캐릭터는 앞으로 뛰고
  • A → 옆으로 뛰고
  • 카메라는 다른 곳을 보고 있어도 된다

5) 공격 시에는 카메라 방향을 바라보게 만들기

 

공격 시에는 카메라가 바라보는 방향으로 캐릭터를 회전

 

변수 생성

  • IsAttacking (Boolean)

공격 입력

  • 공격을 입력 했을 때는 IsAttacking의 값을 True
  • 공격이 끝나고 IsAttacking의 값을 False

회전 제어

 

IsAttacking의 값에 따른 분기

  • True
    • Set CharacterMovement → Orient Rotation to Movement = false
    •  Set Use Controller Rotation Yaw = true
  • False 
    • Set CharacterMovement → Orient Rotation to Movement = true
    • Set Use Controller Rotation Yaw = false

 

결과:

  • 공격 시 = 캐릭터가 카메라 방향을 따라 회전 (TPS 조준 모드)
  • 공격 안함 = 캐릭터는 이동 방향 기준으로만 회전 (엘든링 평상시 모드)

+ Recent posts