Jump to content
Unity Insider Forum

Leaderboard


Popular Content

Showing content with the highest reputation on 05/23/2019 in all areas

  1. 1 point
    Transform.Translate ignoriert sämtliche Physik und bewegt das Objekt stumpf so, wie du es ihm sagst. Wenn dein Objekt in bestimmten Situationen nicht durch die Collider bugt, dann liegt das einzig daran, dass Rigidbodys in jedem Physik-Update einmal schauen, ob sie irgendwo drinstecken. Wenn ja, dann bewegen sie sich aus dem anderen Collider heraus. Dabei wird natürlich nicht mehr berücksichtigt, aus welcher Richtung das Objekt ursprünglich gekommen ist, um in dem anderen Collider zu landen. Wenn du also nur weit genug in irgendetwas reingehst, geht der Rigidbody einfach auf der anderen Seite wieder heraus, weil's der kürzere Weg ist. Lange Rede, kurzer Sinn: Niemals Transform.Translate benutzen, wenn du Kollisionsabfrage haben willst. Es gibt eine Reihe von Möglichkeiten, die tatsächlich direkt Kollisionsabfragen integriert haben: CharacterController benutzen. Der ist genau für humanoide Charaktere da und sehr einfach zu kontrollieren. Statt Transform.Translate benutzt du CharacterController.Move. Einen Rigidbody bewegen lassen. Anstatt deines Scripts kontrolliert der Rigidbody deine Position. Die Geschwindigkeit des Rigidbodys kontrollierst du dann mit AddForce oder über velocity. NavMeshAgent benutzen. Wenn der Spieler nur auf einer vorgegebenen Fläche laufen können muss (und nicht z.B. von Plattform zu Plattform springen kann), dann kannst du ein NavMesh bauen und da einen NavMeshAgent drüberschicken. Geht auch recht einfach. Eigene Kollisionsabfragen. Ist eher was für Fortgeschrittene, aber wenn keine der anderen drei Varianten dir das gewünschte Ergebnis geben kann (heißt nicht, dass du beim ersten Problem sofort aufgeben solltest ), dann kann man auch sein ganz eigenes System bauen.

Announcements

Hy, wir programmieren für dich Apps(Android & iOS):

Weiterleitung zum Entwickler "daubit"



×