Więc tworzę odgórne RPG.
Wszystko idzie dobrze, ale ten problem jest dość irytujący. Teraz, gdy postać porusza się pod ścianą, gracz drży w tę iz powrotem. Zgaduję, że dzieje się tak, ponieważ gracz próbuje wejść w ścianę, a następnie zderzenie ze ścianą odpycha ją do tyłu, co powoduje denerwujący ruch w przód iw tył. Moje pytanie brzmi oczywiście: jak temu zapobiec?
Dzięki!
PS: Używam transform.translate do przenoszenia odtwarzacza i używam C #.
EDYCJA : Używam również 2D Rigidbody i zderzaczy 2Dbox na obu.
Odpowiedzi:
Występują drgania, ponieważ wypaczasz gracza w ścianę za pomocą Transformacji. Przetłumacz, a krok fizyki mówi: „Hej, jesteśmy w ścianie. Rozwiążmy problem kolizji i wypchnij gracza z powrotem ze ściany . ”
Aby tego uniknąć, podczas korzystania z Rigidbody2D zaleca się użycie Rigidbody2D.MovePosition . Dzięki temu nie będziesz mieć nakładających się zderzaczy podczas przenoszenia. Jeśli zderzacz i sztywniak nie mogą się poruszyć, ponieważ coś przeszkadza, nie drgnie.
Używając Rigidbody2D.MovePosition, możesz chcieć ustawić wartość Rigidbody2D.interpolation, aby ruch wyglądał płynnie.
Jeśli jednak Rigidbody2D.MovePosition z jakiegoś powodu nie jest idealny do twojej gry i nadal chcesz używać Transform.Translate, użyj Physics2D.Raycast (lub innych rzutów Physics2D ), aby sprawdzić, czy poruszenie spowodowałoby uderzenie w ścianę, czy nie, i poruszaj się tylko, jeśli nie zostanie trafiona ściana.
źródło