Physik
Einführung
Studio verfügt über ein eingebautes Physiksystem, das für die Handhabung robuster und dynamischer Interaktionen in Ihrer Szene gedacht ist.Hinzufügen von Kollidern
- Collider können in einigen Konfigurationen verschachtelt werden, in anderen jedoch nicht. Ein statischer Kollider innerhalb eines dynamischen Kolliders oder zwei verschachtelte dynamische Kollider könnten sich beispielsweise falsch verhalten.
- Wenn Sie nicht über eine Geometriekomponente verfügen, die auch eine gültige Kollisionsform ist, müssen Sie eine Form manuell angeben. So gibt es zum Beispiel keinen unterstützten passenden Collider für das Tetraeder-Primitiv.
- Die Erzeugung von GLTF-Modellkollidern für komplexe Modelle kann die Leistung beeinträchtigen.
Beispiel
Das folgende Beispiel zeigt, wie ein Collider zur Laufzeit zu einer Entität hinzugefügt werden kann.
ecs.Collider.set(world, component.eid, {
shape: ecs.ColliderShape.Sphere,
radius,
mass: 1,
eventOnly: false,
lockXAxis: false,
lockYAxis: false,
lockZAxis: false,
friction: 0.5,
restitution: 0.5,
linearDamping: 0,
angularDamping: 0,
rollingFriction: 0.1,
spinningFriction: 0.1,
})
Funktionen
Sie können direkt Kräfte (linear und winklig) auf jedes Objekt mit einem Physik-Kollider anwenden. Diese Kräfte werden bei der nächsten Aktualisierung der Physiksimulation angewendet, die in regelmäßigen Abständen stattfindet. Die Funktion akzeptiert einen 3D-Vektor, um die Richtung und den Betrag der Kraft zu definieren.
Geschwindigkeit
Linear
ecs.physics.setLinearVelocity(world, component.eid, forceX, forceY, forceZ)
Kraft und Drehmoment
Kraft
ecs.physics.applyForce(world, component.eid, forceX, forceY, forceZ)
Drehmoment
ecs.physics.applyTorque(world, component.eid, torqueX, torqueY, torqueZ)
Impulse
Diese Funktion wird verwendet, um eine einmalige, momentane Kraft auf einen Physik-Collider anzuwenden, die seine Geschwindigkeit basierend auf dem angegebenen Impulsvektor verändert. Diese Methode eignet sich für Ereignisse, die eine schnelle, einmalige Reaktion erfordern, wie z. B. Springen, Schlagen oder ein plötzlicher Stoß.
ecs.physics.applyImpulse(world, component.eid, impulseX, impulseY, impulseZ)
Schwerkraft
Schwerkraft-Faktor
In jeder Szene wirkt die Schwerkraft als eine konstante Kraft, die als "Weltgravitation" bekannt ist. Diese Kraft wirkt auf jeden Kollisionspartner in der Szene, der auf dynamisch eingestellt ist. Um festzulegen, wie sich die Weltgravitation auf einen einzelnen Collider auswirkt, gibt es ein Attribut namens "Gravitationsfaktor".
Weltgravitation einstellen
ecs.physics.setWorldGravity(world, gravity)