Pemain jittering terhadap dinding saat menekan tombol

17

Jadi, saya membuat RPG top-down.

Semuanya berjalan dengan baik, tetapi masalah ini cukup mengganggu. Sekarang, ketika karakter bergerak ke dinding, pemain gelisah bolak-balik. Saya menduga itu karena pemain mencoba untuk pindah ke dinding, dan kemudian tabrakan dinding mendorongnya kembali, yang membuat gerakan bolak-balik yang mengganggu. Pertanyaan saya jelas, bagaimana saya menghentikan ini terjadi?

Terima kasih!

PS: Saya menggunakan transform.translate untuk memindahkan pemain, dan saya menggunakan C #.

EDIT : Saya juga menggunakan 2D Rigidbody, dan 2Dbox colliders di keduanya.

GMR516
sumber
Anda hanya perlu tes sweep sebelum menerjemahkan
MickLH
Oh Uh ... Saya tidak yakin cara menambahkan ini di Unity C #. Saya sedikit baru ke C #. Jika Anda memiliki pengetahuan, maukah Anda menjelaskan bagaimana menerapkan ini?
GMR516

Jawaban:

51

Kegugupan terjadi karena Anda membengkokkan pemain ke dinding menggunakan Transform.Terjemahan, dan langkah fisika berkata, "Hei, kita di dinding. Mari kita selesaikan masalah tabrakan ini dan dorong pemain kembali ke luar dinding . "

Untuk menghindari hal ini, saat menggunakan Rigidbody2D, disarankan untuk menggunakan Rigidbody2D.MovePosition . Ini memastikan Anda tidak akan memiliki collider yang tumpang tindih saat bergerak. Jika seorang collider dan rigidbody tidak bisa bergerak karena ada sesuatu yang menghalangi, itu tidak akan gelisah.

Menggunakan Rigidbody2D.MovePosition, Anda mungkin ingin mengatur nilai Rigidbody2D.interpolation untuk menjaga gerakan tampak lancar.

Namun, jika Rigidbody2D.MovePosition tidak ideal untuk gim Anda karena suatu alasan dan Anda masih ingin menggunakan Transform.Terjemahkan, gunakan Physics2D.Raycast (atau gips Physics2D lainnya ) untuk melihat apakah bergerak akan membuat Anda menabrak dinding atau tidak, dan hanya bergerak jika tidak ada dinding yang tertabrak.

Chris McFarland
sumber