[UE4] CharacterMovementComponent의 CurrentFloor에서 바닥(지면)의 정보를 취득하자!

소개



캐릭터의 거동이나 연출을 제어하기 위해, 캐릭터가 지금 타고 있는 바닥(지면)의 각 정보를 취득하는 케이스는 많을까 생각합니다. 그 때 자주 사용되는 것이 LineTrace입니다만, 여러가지 자료로 해설되고 있는 대로, 무거운 처리이므로 자주 호출하면 문제가 될 가능성이 있습니다…

[CEDEC2018] UE4에서 다수의 캐릭터를 살리기 위한 테크닉
htps //w w. s에서 멋지다. 네 t/에피 c가메 s쟈판/세로 c2018-우에 4-111105729/115

이 문제를 해결하기 위한 기능・Tips는 몇 가지 있습니다만, 이번은 아마 사소한 Character Movement ComponentCurrentFloor 에 대해 소개합니다.

CharacterMovementComponent의 CurrentFloor 정보




모두 다이스키(?) Character Movement Component , 캐릭터의 움직임을 제어하는 ​​과정에서 Capsule이나 LineTrace를 사용한 바닥의 판정 처리 (UCharacterMovementComponent::FindFloor 등)를 실행하고 있습니다. 그 결과가 Character Movement Component 의 ` CurrentFloor 에 격납되고 있습니다.





그 때문에, LineTrace에 의한 바닥 정보의 취득 처리를 구현하지 않아도, CurrentFloor 로부터 바닥의 Actor 정보나 바닥의 기울기 등 다양한 정보를 취득할 수 있습니다.
예를 들어 바닥의 기울기에 의해 모션을 바꾸고 싶은 경우는 CurrentFloor -> Hit Result -> Normal 로부터 필요한 정보를 취득할 수 있습니다!

바닥 정보를 사용하려면 LineTrace를 사용하기 전에 먼저 Character Movement Component



LineTrace와 달리 CurrentFloorFCollisionQueryParams 가 활성화되어 있지 않기 때문에 bReturnPhysicalMaterialCurrentFloor 에서 Hit Result
FHitResultより

/**
 * Physical material that was hit.
 * @note Must set bReturnPhysicalMaterial on the swept PrimitiveComponent or in the query params for this to be returned.
 */
UPROPERTY()
TWeakObjectPtr<class UPhysicalMaterial> PhysMaterial;

그 때문에, Phys MatCharacter Movement Component 의 정보를 사용해 발음의 제어를 하고 싶은 경우는 물리 머티리얼 이외의 방법(Actor, Component Tag로 판정하거나…)을 검토합시다.

오시마

좋은 웹페이지 즐겨찾기