개요
[ 5.3. 플레이어 입력 ] 에서 어떤 플레이어 입력이 있는지 살펴 보았습니다. 이 섹션에서는 이동과 관련한 로직 및 애니메이션에 대해서 살펴 보도록 하겠습니다.
이동( locomotion, 보행, 운동 )과 관련된 로직에 대해서 다루도록 하겠습니다. 간단하게 요약하자면 UT 의 이동 로직은 UUTCharacterMovment 컴포넌트에 의존합니다. Character component 의 처리 결과에 따라서 어떠한 애니메이션들을 블렌딩할지를 결정하게 됩니다.
1인칭 캐릭터에서는 "Content/RestrictedAssets/Universal/1stPerson/UT4_Base_1stP_AnimBP.uasset" 의 "Main_Motion" FSM( finite state machines ) 을 사용하며, 3인칭 캐릭터에서는 "Content/RestrictedAssets/Animations/Universal/UT4_Base_AnimBP.uasset" 의 "Locomotion" FSM 과 "Landing" FSM 을 사용합니다.
일단 Character Movement 컴포넌트의 주요 역할은 물리와 애니메이션에서 사용할 자료( 변수 )를 준비하는 것입니다. 만약 Character Movement 컴포넌트가 없고 Player Controller 만 존재한다면, Player Controller 나 Character 에서 물리 및 애니메이션을 처리해야만 할 것입니다.
Character Movement 컴포넌트
UT 에서 기본 Character Movement 컴포넌트의 클래스는 UUTCharacterMovement 입니다. "DefaultCharacter" 블루 프린트를 열어서 "Components" 뷰를 보면 아래쪽에 "UTCharacterMovment(Inherit)" 라는 항목을 볼 수 있습니다. 오른쪽의 "Details" 뷰를 보면 매우 많은 속성 카테고리들이 존재함을 알 수 있습니다.
보시면 알겠지만 게임에서 사용할 만한 상황들은 거의 다 들어 가 있습니다. 물론 상황에 맞춰 FSM 을 구성하는 수고는 해야 합니다.
이동 모드
Character Movement 컴포넌트에서 이동 모드의 전환은 FSM 으로 표현될 수 있습니다만 여기에서 다루지는 않겠습니다. 애니메이션 블루프린트마다 애니메이션 FSM 을 따로 구성하기 때문에 코드 상에서의 상태 전환에 대해서 언급하는 것은 크게 의미가 없을 것 같습니다. 애니메이션 FSM 에 대해서는 다른 문서에서 다루도록 하겠습니다. 단지 다음과 같은 이동 모드들이 있다는 것만 알아 두시면 될 것 같습니다.
- Walking : 땅바닥에 붙어서 걸어다니는 이동 모드.
- NavWalking : AI 등이 네비게이션 메쉬와 길찾기를 통해서 걸어다니는 모드.
- Swimming : 물에 들어 갔을 때의 이동 모드.
- Falling : 점프를 하거나 바닥에 닿지 않아 떨어지고 있을 때의 이동 모드.
- Custom : 사용자의 커스텀한 이동 모드.
- Flying : 날아다니는 이동 모드.
이제 각 이동 모드와 관련한 중요한 속성들을 살펴 보도록 하겠습니다. 대부분 어렵지 않은 속성들을 가지고 있기 때문에 이해하는데 큰 어려움은 없을 것입니다. 일단 어떤 기능들을 가지고 있는지 이해하고 있어야지 이미 존재하는 기능을 또 구현하는 불상사를 막을 수 있기 때문에, 지루하더라도 한 번씩은 읽어 보시기 바랍니다.
제가 밥상은 차려줄 수 있지만, 떠 먹는건 알아서 하시기 바랍니다.
Character Movement
각 이동 모드의 가속도 및 감속도를 설정하는 곳입니다.
이름 |
설명 |
MaxFallingAcceleration |
|
MaxSwimmingAcceleration |
|
MaxRelativeSwimmingAccelNumerator |
|
MaxRelativeSwimmingAccelDenomitor |
|
BrakingDecelerationSliding |
|
DefaultBrakingDecelerationWalking |
|
IgnoreClientMovementErrorChecksAndCorrection |
|
Character Movement(General Settings)
일반적인 설정을 하는 곳입니다.
이름 |
설명 |
GravityScale |
|
MaxAccelleration |
|
BrakingFrictionFactor |
|
BrakingFriction |
|
UseSeperateBrakingFriction |
|
CrouchedHalfHeight |
|
RotationRate |
|
OrientRotationToMovement |
|
Mass |
|
DefaultLandMovementMode |
|
DefaultWaterMovementMode |
|
JustTeleported |
|
WantstoCrouch |
|
UseControllerDesiredRotation |
|
EnableScopedMovementUpdates |
|
RunPhysicsWithNoController |
|
MaxSimulationTimeStep |
|
MaxSimulationIterations |
|
CrouchMaintainsBaseLocation |
|
RequestedMoveUseAcceleration |
|
CharacterMovement : Walking
걷기와 관련한 설정을 하는 곳입니다.
이름 |
설명 |
MaxStepHeight |
|
WalkableFloorAngle |
|
WalkableFloorZ |
|
GroundFriction |
|
MaxWalkSpeed |
|
MaxWalkSpeedCrouched |
|
BrakingDecelerationWalking |
|
CanWalkOffLedges |
|
CanWalkOffLedgesWhenCrouching |
|
CurrentFloor |
|
MaintainHorizontalGroundVelocity |
|
IgnoreBaseRotation |
|
PerchRadiusThreshold |
|
PerchAdditionalHeight |
|
ForceNextFloorCheck |
|
LedgeCheckThreshold |
|
AlwaysCheckFloor |
|
UseFlatBaseforFloorChecks |
|
CharacterMovement : Jumping / Falling
캐릭터가 점프하거나 떨어지고 있는 상황을 제어하는 곳입니다.
이름 |
설명 |
JumpZVelocity |
|
BrakingDecelerationFalling |
|
AirControl |
|
AirControlBoostMultiplier |
|
AirControlBoostVelocityThreshold |
|
FallingLateralFriction |
|
ImpartBaseVelocityX |
|
ImpartBaseVelocityY |
|
ImpartBaseVelocityZ |
|
ImpartBaseAngularVelocity |
|
NotifyApex |
|
JumpOffJumpZFactor |
|
Character Movement : Swimming
캐릭터가 물에 빠졌을 때의 이동을 제어하는 곳입니다.
이름 |
설명 |
MaxSwimSpeed |
|
BrakingDecelerationSwimming |
|
Buoyancy |
|
MaxOutOfWaterStepHeight |
|
OutofWaterZ |
|
JumpOutofWaterPitch |
|
Character Movement : Flying
날아 다닐 때의 이동을 제어하는 곳입니다.
이름 |
설명 |
MaxFlySpeed |
|
BrakingDecelerationFlying |
|
Character Movement : Custom Movement
사용자가 커스텀하게 설정하는 이동을 제어하는 곳입니다.
이름 |
설명 |
MaxCustomMovementSpeed |
최대 속력. |
Character Movement : Physics Interaction
캐릭터 이동시 물리의 영향을 어떻게 받을 것인지 설정하는 곳입니다.
이름 |
설명 |
EnablePhysicsInteraction |
|
TouchForceScaledtoMass |
|
PushForceScaledtoMass |
|
PushForceUsingZOffset |
|
ScalePushForcetoVelocity |
|
StandingDownwardForceScale |
|
InitialPushForceFactor |
|
PushForceFactor |
|
PushForcePointZOffsetFactor |
|
TouchForceFctor |
|
MinTouchForce |
|
MaxTouchForce |
|
RepulsionForce |
|
'Engines > UE4' 카테고리의 다른 글
Unreal Plugin Lanaguage ( UPL ) 란? (2) | 2018.07.15 |
---|---|
UE4 Brush, BSP, PhysX Convex 에 대해 (7) | 2017.04.02 |
UE4 의 Package, Asset, 그리고 Paths 에 대해... (4) | 2017.04.01 |
[ TIP ] UE4 에서 Visual Studio 2015 Graphics Diagnostics 이용하기 (0) | 2017.01.16 |
[ UT 분석 ] 6.2. 1인칭 캐릭터 - 이동과 애니메이션 (0) | 2016.07.04 |
[ UT 분석 ] 5.3. 플레이어 입력 (0) | 2016.06.22 |
[ UT 분석 ] 6.1. 1인칭 캐릭터 - 구조 (0) | 2016.06.21 |
[ UT 분석 ] 5.2. 애니메이션 기본 구조 (0) | 2016.06.06 |
[ UT 분석 ] 5.1. 캐릭터 외형 (0) | 2016.06.06 |
[ UT 분석 ] 4. 프로젝트 세팅 및 게임 모드 (0) | 2016.05.31 |