unity3d
Kollision
Suche…
Colliders
Box Collider
Ein primitiver Collider, der wie ein Quader geformt ist.
Eigenschaften
Ist Trigger - Wenn diese Option aktiviert ist, ignoriert der Box Collider die Physik und wird zum Trigger Collider
Material - Ein Verweis auf das Physikmaterial des Box Colliders, falls angegeben
Center - Die zentrale Position des Box Colliders im lokalen Raum
Größe - Die Größe des Box Colliders im lokalen Raum
Beispiel
// Add a Box Collider to the current GameObject.
BoxCollider myBC = BoxCollider)myGameObject.gameObject.AddComponent(typeof(BoxCollider));
// Make the Box Collider into a Trigger Collider.
myBC.isTrigger= true;
// Set the center of the Box Collider to the center of the GameObject.
myBC.center = Vector3.zero;
// Make the Box Collider twice as large.
myBC.size = 2;
Sphere Collider
Ein primitiver Collider, der wie eine Kugel geformt ist.
Eigenschaften
Ist Trigger - Wenn diese Option aktiviert ist, ignoriert der Sphere Collider die Physik und wird zum Trigger Collider
Material - Eine Referenz, falls angegeben, auf das Physikmaterial des Sphere Collider
Center - Die zentrale Position des Sphere Colliders im lokalen Raum
Radius - Der Radius des Colliders
Beispiel
// Add a Sphere Collider to the current GameObject.
SphereCollider mySC = SphereCollider)myGameObject.gameObject.AddComponent(typeof(SphereCollider));
// Make the Sphere Collider into a Trigger Collider.
mySC.isTrigger= true;
// Set the center of the Sphere Collider to the center of the GameObject.
mySC.center = Vector3.zero;
// Make the Sphere Collider twice as large.
mySC.radius = 2;
Capsule Collider
Zwei durch einen Zylinder verbundene Halbkugeln.
Eigenschaften
Ist Trigger - Wenn diese Option aktiviert ist, ignoriert der Capsule Collider die Physik und wird zum Trigger Collider
Material - Eine Referenz, falls angegeben, auf das Physikmaterial des Capsule Collider
Center - Die zentrale Position des Capsule Collider im lokalen Raum
Radius - Der Radius im lokalen Raum
Höhe - Gesamthöhe des Colliders
Richtung - Die Orientierungsachse im lokalen Raum
Beispiel
// Add a Capsule Collider to the current GameObject.
CapsuleCollider myCC = CapsuleCollider)myGameObject.gameObject.AddComponent(typeof(CapsuleCollider));
// Make the Capsule Collider into a Trigger Collider.
myCC.isTrigger= true;
// Set the center of the Capsule Collider to the center of the GameObject.
myCC.center = Vector3.zero;
// Make the Sphere Collider twice as tall.
myCC.height= 2;
// Make the Sphere Collider twice as wide.
myCC.radius= 2;
// Set the axis of lengthwise orientation to the X axis.
myCC.direction = 0;
// Set the axis of lengthwise orientation to the Y axis.
myCC.direction = 1;
// Set the axis of lengthwise orientation to the Y axis.
myCC.direction = 2;
Wheel Collider
Eigenschaften
Masse - Die Masse des Wheel Colliders
Radius - Der Radius im lokalen Raum
Raddämpfungsrate - Dämpfungswert für den Wheel Collider
Abhängungsdistanz - Maximale Ausdehnung entlang der Y-Achse im lokalen Raum
Abstand zwischen Kraftpunkten - Der Punkt, an dem Kräfte angewendet werden,
Center - Zentrum des Wheel Colliders im lokalen Raum
Federungsfeder
Frühling - die Rate, mit der das Rad versucht, zur Zielposition zurückzukehren
Dämpfer - Ein größerer Wert dämpft die Geschwindigkeit mehr und die Federung bewegt sich langsamer
Zielposition - der Standardwert ist 0,5, bei 0 ist die Suspension erschöpft, bei 1 ist sie voll ausgefahren
Vorwärts- / seitwärts gerichtete Reibung - wie sich der Reifen beim Vorwärts- oder seitwärtsrollen verhält
Beispiel
Mesh Collider
Ein Collider, der auf einem Mesh-Asset basiert.
Eigenschaften
Ist Trigger - Wenn diese Option aktiviert ist, ignoriert der Box Collider die Physik und wird zum Trigger Collider
Material - Ein Verweis auf das Physikmaterial des Box Colliders, falls angegeben
Mesh - Ein Verweis auf das Mesh, auf dem der Collider basiert
Convex - Convex Mesh Colliders sind auf 255 Polygone beschränkt. Wenn diese Option aktiviert ist, kann dieser Collider mit anderen Mesh Colliders kollidieren
Beispiel
Wenn Sie mehr als einen Collider auf ein GameObject anwenden, nennen wir es einen zusammengesetzten Collider.
Wheel Collider
Der Wheel Collider in Unity ist auf dem PhysX Wheel Collider von Nvidia aufgebaut und hat daher viele ähnliche Eigenschaften. Technisch gesehen ist Einheit ein "unitless" Programm, aber um alles sinnvoll zu machen, sind einige Standardeinheiten erforderlich.
Grundeigenschaften
- Masse - das Gewicht des Rades in Kilogramm, dies wird für den Radimpuls und den Moment des Interieurs beim Drehen verwendet.
- Radius - in Metern der Radius des Kolliders.
- Raddämpfungsrate - Stellt ein, wie "reaktionsfähig" die Räder auf das aufgebrachte Drehmoment reagieren.
- Aufhängungsentfernung - Gesamtentfernung in Metern, die das Rad zurücklegen kann
- Force App Point Distance (Kraftanwendungspunktabstand) - Wo ist die Kraft, die von der Federung auf den übergeordneten starren Körper ausgeübt wird
- Center - Die Mittelposition des Rades
Suspendierungseinstellungen
- Feder - Dies ist die Federkonstante K in Newton / Meter in der Gleichung:
Kraft = Federkonstante * Abstand
Ein guter Ausgangspunkt für diesen Wert sollte die Gesamtmasse Ihres Fahrzeugs sein, dividiert durch die Anzahl der Räder, multipliziert mit einer Zahl zwischen 50 und 100. Wenn Sie beispielsweise ein Fahrzeug mit 2.000 kg und 4 Rädern haben, müsste jedes Rad Unterstützung 500kg. Multiplizieren Sie dies mit 75, und Ihre Federkonstante sollte 37.500 Newton / Meter betragen.
- Dämpfer - das Äquivalent eines Stoßdämpfers in einem Auto. Höhere Raten machen die Spannung "steifer" und niedrigere Raten machen sie "weicher" und schwingen eher.
Ich kenne die Einheiten oder die Gleichung dafür nicht, ich denke es hat jedoch mit einer Frequenzgleichung in der Physik zu tun.
Seitliche Reibungseinstellungen
Die Reibungskurve in Einheit hat einen Schlupfwert, der dadurch bestimmt wird, wie stark das Rad (in m / s) von der gewünschten Position gegenüber der tatsächlichen Position rutscht.
Extremum Slip - Dies ist die maximale Menge (in m / s), die ein Rad rutschen kann, bevor es die Traktion verliert
Extremwert - Dies ist die maximale Reibung, die auf ein Rad ausgeübt werden sollte.
Die Werte für Exrtremum Slip sollten für die meisten realistischen Autos zwischen 0,2 und 2 m / s liegen. 2 m / s sind ungefähr 6 Fuß pro Sekunde oder 5 Meilen pro Stunde, was viel Schlupf ist. Wenn Sie der Meinung sind, dass Ihr Fahrzeug einen Wert von mehr als 2 m / s für Schlupf haben muss, sollten Sie die maximale Reibung (Extremum Value) erhöhen.
Max Fraction (Extremum Value) ist der Reibungskoeffizient in der Gleichung:
Reibungskraft (in Newton) = Reibungskoeffizient * Abwärtskraft (in Newton)
Das bedeutet mit einem Koeffizienten von 1, dass Sie die gesamte Kraft des Fahrzeugs + der Aufhängung entgegen der Schlupfrichtung anwenden. In realen Anwendungen sind Werte über 1 selten, aber nicht unmöglich. Für einen Reifen auf trockenem Asphalt sind Werte zwischen 0,7 und 0 realistisch, daher ist der Standardwert 1,0 vorzuziehen.
Dieser Wert sollte realistisch nicht 2,5 überschreiten, da merkwürdiges Verhalten auftreten wird. Sie beginnen z. B. nach rechts zu drehen, aber da dieser Wert so hoch ist, wird eine große Kraft entgegen Ihrer Richtung ausgeübt und Sie beginnen in die Kurve zu gleiten anstatt wegzurutschen.
Wenn Sie beide Werte maximal eingestellt haben, sollten Sie den Asymptoten-Slip und den Wert erhöhen. Der Asymptoten-Schlupf sollte zwischen 0,5 und 2 m / s liegen und definiert den Reibungskoeffizienten für jeden Schlupfwert nach dem Asymptoten-Schlupf. Wenn Sie feststellen, dass sich Ihre Fahrzeuge gut verhalten, bis sie die Traktion brechen, und sich dann wie auf Eis verhält, sollten Sie den Asymptote-Wert erhöhen. Wenn Sie feststellen, dass Ihr Fahrzeug nicht driften kann, sollten Sie den Wert verringern.
Vorwärtsreibung
Die Vorwärtsreibung ist identisch mit der seitlichen Reibung, mit der Ausnahme, dass hiermit festgelegt ist, wie viel Traktion das Rad in Bewegungsrichtung hat. Wenn die Werte zu niedrig sind, werden Ihre Fahrzeuge durchgebrannt und drehen die Reifen, bevor sie langsam vorwärts fahren. Wenn es zu hoch ist, hat Ihr Fahrzeug möglicherweise die Tendenz, einen schlechten oder schlimmeren Schlag zu versuchen.
Zusätzliche Bemerkungen
Erwarten Sie nicht, dass Sie einen GTA-Klon oder einen anderen Rennklon erstellen können, indem Sie einfach diese Werte anpassen. In den meisten Fahrspielen werden diese Werte für verschiedene Geschwindigkeiten, Gelände und Wendewerte ständig im Skript geändert. Wenn Sie beim Drücken einer Taste lediglich ein konstantes Drehmoment auf die Radkollider ausüben, verhält sich Ihr Spiel nicht realistisch. In der Realität haben Autos Drehmomentkurven und Getriebe, um das auf die Räder aufgebrachte Drehmoment zu ändern.
Um optimale Ergebnisse zu erzielen, sollten Sie diese Werte so lange anpassen, bis Sie ein Auto bekommen, das einigermaßen gut reagiert, und dann das Raddrehmoment, den maximalen Drehwinkel und die Reibungswerte im Skript ändern.
Weitere Informationen zu den Radkollidern finden Sie in der Dokumentation zu Nvidia: http://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/Vehicles.html
Trigger-Colliders
Methoden
-
OnTriggerEnter()
-
OnTriggerStay()
-
OnTriggerExit()
Sie können einen Collider in einen Trigger OnTriggerEnter()
, um die OnTriggerEnter()
, OnTriggerStay()
und OnTriggerExit()
verwenden. Ein Trigger Collider reagiert nicht physisch auf Kollisionen, andere GameObjects passieren sie einfach. Sie sind nützlich, um zu erkennen, wann sich ein anderes GameObject in einem bestimmten Bereich befindet oder nicht. Wenn Sie zum Beispiel ein Objekt sammeln, möchten wir es vielleicht einfach durchlaufen lassen, aber erkennen, wenn dies passiert.
Trigger Collider Scripting
Beispiel
Die folgende Methode ist ein Beispiel für einen Trigger-Listener, der erkennt, wenn ein anderer Collider in den Collider eines GameObject (z. B. eines Spielers) eintritt. Triggermethoden können zu jedem Skript hinzugefügt werden, das einem GameObject zugewiesen ist.
void OnTriggerEnter(Collider other)
{
//Check collider for specific properties (Such as tag=item or has component=item)
}