Düğme basılı tutulduğunda duvara yaslanan oyuncu


17

Bu yüzden yukarıdan aşağıya bir RPG yapıyorum.

Her şey mükemmel gidiyor, ama bu sorun oldukça can sıkıcı. Şimdi, karakter duvara doğru hareket ettiğinde, oyuncu ileri geri titriyor. Sanırım bunun nedeni oyuncu duvarın içine girmeye çalışıyor ve sonra duvar çarpışması onu geri itiyor, bu da can sıkıcı bir ileri geri hareket yapıyor. Sorum şu ki, bunun olmasını nasıl önleyebilirim?

Teşekkürler!

Not: Oynatıcıyı taşımak için transform.translate kullanıyorum ve C # kullanıyorum.

EDIT : Ben de her ikisi de bir 2D Rigidbody ve 2Dbox çarpıştırıcılar kullanıyorum.


Tercüme etmeden önce sadece bir tarama testine ihtiyacınız var
MickLH


Ah. Uh ... Bunu Unity C # içine nasıl ekleyeceğimi bilmiyorum. C # için biraz yeniyim. Bilginiz varsa, bunu nasıl uygulayacağınızı açıklar mısınız?
Genevra

Yanıtlar:


51

Gerilim oluyor çünkü Transform.Translate'i kullanarak oyuncuyu duvara çarpıyorsunuz ve fizik adımı "Hey, duvardayız. Bu çarpışma sorununu çözelim ve oyuncuyu duvardan geri itelim ."

Bir Rigidbody2D kullanırken Bunu önlemek için, bu kullanmak daha akıllıca Rigidbody2D.MovePosition . Bu hareket ederken çakışan çarpıştırıcılara sahip olmayacağınızı garanti eder. Bir çarpıştırıcı ve katı kimse hareket edemezse, çünkü bir şey yolundaysa, titremez.

Rigidbody2D.MovePosition kullanarak , hareketi pürüzsüz tutmak için Rigidbody2D . enterpolasyon değerini ayarlamak isteyebilirsiniz .

Bununla birlikte, Rigidbody2D.MovePosition, oyununuz için herhangi bir nedenden dolayı ideal değilse ve hala Transform.Translate'i kullanmak istiyorsanız, hareket etmenin bir duvara çarpıp çarpmayacağını görmek için Physics2D.Raycast (veya diğer Physics2D dökümleri) kullanın ve sadece duvara çarpılmadığında hareket edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.