Zum Hauptinhalt springen

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

hinweis
  • 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.

Physik-Komponente.png

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

tipp

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)