phent_addcentralforce ( ENTITY*, VECTOR* vForce );
Während des folgenden Framezyklus wird eine lineare Kraft auf das Massezentrum
der Entity angewendet. Gibt es keine Gravitation und auch keine
Dämpfung
bzw. Reibung, dann wird die Entity in Richtung von vForce,
welche unabhängig
von der Ausrichtung der Entity ist, ungehindert weitergleiten.
Parameter:
ENTITY* |
die zu beeinflussende Entity |
vForce* |
Vektor; der die auf die Entity auszuübende Kraft an ihrem Massezentrum
angibt.. |
Rückgabewert:
1 bei Erfolg, sonst 0.
Bemerkungen:
-
Kraft beschleunigt die Entity gemäß der Newtonschen Formel Geschwindigkeit
= Zeit * Kraft / Masse. Daher muß man zur höheren Beschleunigung von
schwereren Entities die Kraft entweder länger anwenden oder eine stärkere
Kraft benutzen.
- Vermeiden Sie es, Kräfte für eine von der Framerate abgängige Dauer anzuwenden.
Im schlimmsten Fall - beim Anwenden einer Krafr für nur einen Framezyklus
(time_frame) - wird die Geschwindigkeit der Entity
von der Framerate bestimmt. Ist die Engine-Framerate höher als die Update-Rate
der Physik (►ph_fps_max_lock), kann
es sogar passieren, dass im Framezyklus gar kein Physik-Update geschieht
und die Entity überhaupt nicht beschleunigt.
- Wollen Sie eine Entity unabhängig von der Framerate auf eine bestimmte
Geschwindigkeit beschleunigen, benutzen Sie stattdessen phent_addvelcentral.
- Kräfte sind additiv, das heisst, ein zweimaliges Aufrufen dieser Funktion
verdoppelt die Kraft.
- Aus Gründen der Effizienz sollten Sie, wenn möglich phent_addcentralforce der
Anweisung phent_addforceglobal vorziehen.
Geschwindigkeit:
Schnell
Edition:
C
P
Beispiel:
entity* myCrate;
ph_setgravity( nullvector );
phent_setmass( myCrate, 10 );
phent_setdamping (myCrate, 0 );
temp.x= 50; temp.y= 0; temp.z= 0;
// now myCrate will continue to move along the x axis forever, with constant speed
phent_addcentralforce( myCrate, temp );
Siehe auch:
► Aktuelle Version Online