24.02.03 TIL - Unity : MovePosition(), 물리 기반 이동

JJwoo·2024년 2월 3일

MovePosition

물리 작용을 이용해 위치 정보를 계산하는 함수.

Rigidbody 컴포넌트의 메소드이며

(Rigidbody가 없으면 작동 x)

Vector 값을 인수로 지정하여 해당 위치로 이동.

Rigidbody rb; // 플레이어의 리지드 바디 컴포넌트


//void Start
//플레이어의 리지드 바디 컴포넌트 가져와서 저장
rb = GetComponent<Rigidbody>(); 


void Update
{
// 기존의 트랜스폼 이동 방식
//transform.position += new Vector3(h, 0, v).normalized * moveSpeed * Time.deltaTime;


rb.MovePosition(rb.position + (new Vector3(h, 0, v).normalized * moveSpeed * Time.deltaTime));
}

물리 작용이 있는 상체에서 오브젝트가 충돌 가능한 벽이 있는 특정 방향으로 계속 이동하려고 하는 상황에서, 벽에 부딪히면 오브젝트는 통과되지 않지만 오브젝트의 Transform은 계속해서 증가하는 상황에서 transform.position 대신 사용하면 좋다.

profile
개발 모코코

0개의 댓글