본문 바로가기
프로그래밍/Unreal Engine 3

FootPlacement

by neive 2012. 3. 23.
728x90

FootPlacement 를 알기 전에 실린더컬리전을 쓰고 있다면 먼저 컬리전부터 확인해야된다
FootPlacement 가 진행되기 전에 우선적으로 컬리전을 먼저 체크를 하기 때문에.. 웬만해서는 발바닥이 땅에 닳지도
않는다

이렇게 컬리전을 위로 올려서 다리만 보이게 하고 다니면서 체크를 해도 되지만-


실린더 컬리전에 대해서 인지를 했다면 이제 언리얼 사이트에 나온 FootPlacement 에 대한 내용이 이해가 될 듯


보면 공식이 이해가 되겠지요- Location 보다 진짜 FootSocket 으로 체크도 가능하지만, 애니메이션에 따라 너무 요동칠 수도 있으니


초기화 부분에서 예제에 나온 simulated function EnableLeftFootPlacement() 이랑 Right 둘다 호출을 해줘야 정상 동작
을 합니다... 의외로 여기서 헤메는 분들이 있더군요 ㅠㅠ 예제에는 그런 언급이 없어서 그런 듯..

그리고 애초에 스켈레탈 메쉬의 센터가 모델의 중앙이냐 발 밑이냐에 따라서 offset 을 추가로 해줘야 하지요
(유도리 있게 하려면 언리얼 예제의 그 소스처럼 offset 변수는 필요하겠죠:) )


그리고 문제의 Tick 안의 계산 부분 -_- 제 스타일 대로 해볼까요..
simulated event Tick(float DeltaTime)
{
    // 중략
   else
   {
        if(vLFootHit.Z < vRFootHit.Z)   // 왼발에 체중
           DesiredMeshTranslation.Z -= Location.Z - vLFootHit.Z - CylinderComponent.CollisionHeight;  // 왼발이 땅에 닿을 때까지 내려준다
        else                            // 오른발에 체중
           DesiredMeshTranslation.Z -= Location.Z - vRFootHit.Z - CylinderComponent.CollisionHeight;  // 오른발
   }
    // 중략
}

이전에 올린 글들을 참고해서 만들어보아요...

728x90

댓글