버튼을 누르고 있으면 벽에 흔들리는 플레이어


17

그래서 저는 하향식 RPG를 만들고 있습니다.

모든 것이 훌륭해 지지만이 문제는 상당히 성가신 일입니다. 이제 캐릭터가 벽을 향해 움직일 때 플레이어는 앞뒤로 움직입니다. 플레이어가 벽으로 이동하려고 시도한 다음 벽 충돌이 뒤로 밀려서 앞뒤로 움직일 수 없기 때문입니다. 내 질문은 분명히, 어떻게 이런 일이 발생하지 않도록해야합니까?

감사!

추신 : 플레이어를 이동시키기 위해 transform.translate을 사용하고 있으며 C #을 사용하고 있습니다.

편집 : 나는 또한 2D Rigidbody와 2Dbox 충돌체를 모두 사용하고 있습니다.


번역하기 전에 스윕 테스트가 필요합니다
MickLH


오. 어 ... Unity C #에서 이것을 추가하는 방법을 잘 모르겠습니다. 나는 C #에 약간 익숙하다. 지식이 있다면이를 구현하는 방법을 설명해 주시겠습니까?
GMR516

답변:


51

Transform.Translate를 사용하여 플레이어를 벽에 비틀기 때문에 지 터링이 발생하고 물리 단계에서 "이봐, 우리는 벽에 있습니다.이 충돌 문제를 해결하고 플레이어를 벽 밖으로 밀어냅니다." "

이를 방지하려면 Rigidbody2D를 사용할 때 Rigidbody2D.MovePosition 을 사용하는 것이 좋습니다 . 이렇게하면 이동시 겹치는 충돌자가 없어집니다. 방해물이있어 충돌체와 강체가 움직일 수 없다면, 흔들리지 않습니다.

Rigidbody2D.MovePosition을 사용 하여 움직임을 부드럽게 보이도록 Rigidbody2D. 보간 값을 설정할 수 있습니다 .

그러나 Rigidbody2D.MovePosition이 어떤 이유로 게임에 이상적이지 않고 Transform.Translate을 계속 사용하려는 경우 Physics2D.Raycast (또는 다른 Physics2D 캐스트)를 사용하여 움직이면 벽에 부딪치지 않는지 확인하십시오. 벽에 부딪치지 않은 경우에만 움직입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.