phent_settype ( ENTITY*, var type, var hull );
Registriert eine Entity im Physik-System oder hebt die Registrierung
auf. Wird eine Entity registriert, steht sie ab dem nächsten Frame unter Kontrolle
des Physik-Systems (falls über ph_selectgroup
die Gruppe der Entity ausgewählt wurde). Wird die Entity deregistriert, ist sie
wieder eine "normale" Entity und wird nicht weiter von der Physik-Engine kontrolliert.
Parameters:
ENTITY* |
Entity, die registriert / deregistriert werden soll |
type |
PH_RIGID registriert eine Entity als festen Körper.
PH_WAVE P registriert
Terrain als dynamische Wasseroberfläche.
0 deregistriert die Entity aus dem Physik-System. |
hull |
Kollisionshülle dieses Objekts: PH_BOX, PH_SPHERE, PH_CYLINDER
oder PH_POLY |
Rückgabewert:
1 bei Erfolg, sonst 0.
Bemerkungen:
- Diese Anweisung muss aufgerufen
werden, bevor irgendeine andere phent_ Anweisung aufgerufen
wird.
- Beim ersten Registrieren einer Entity
benötigt die Anweisung Zeit für interne Berechnungen. Deswegen macht es
Sinn, alle potentiellen Physik-Entities gleich nach dem Laden des Levels zu registrieren
und dann anschließend die Registrierung wieder aufzuheben. Während des Spielverlaufs
geht dann das Registrieren aller Entities dieses Typs um einiges schneller.
- Sie können zwar weiterhin Position und Ausrichtung einer registrierten
Entity auslesen, aber die Position, Ausrichtung oder Skalierung nicht
mehr direkt verändern. Benutzen Sie stattdessen phent_addforce,
um Kräfte auf das Objekt wirken zu lassen. Müssen Sie die Position
oder Ausrichtung direkt ändern, dann schalten Sie das Physik System
kurzzeitig
mit phent_enable ab.
- Verwenden Sie für sich bewegende Entities keine PH_POLY-Hüllen.
- PH_WAVE konvertiert eine Terrain-Entity in eine dynamische
Wasseroberfläche. Die Auflösung hängt vom Vertex-Gitter
des Terrains ab. Je mehr Vertices vorhanden sind, umso weicher, aber
auch langsamer läuft die Bewegung. Einiige Funktionen stehen
zum Steuern
von PH_WAVE Wasserflächen zur Verfügung: phent_setdamping, phent_addforcelocal und phent_addobstruction.
- In der Commercial-Edition C kann
nur eine Physik-Entity registriert werden. Um eine weitere zu registrieren,
muss die erste vorher unregistriert werden. Diese Einschränkung gilt
nicht für A7 oder lite-C.
Geschwindigkeit:
Langsam / Mittel
Edition:
A6 C P
A7 P für PH_WAVE
Beispiel:
ENTITY* myCrate;
// .
// beim starten
myCrate = ent_create( "crate.mdl", nullvector, any_function );
phent_settype( myCrate, PH_RIGID, 0 );
phent_settype( myCrate, 0, 0 );
// .
// mit einem Kasten rumspielen
var position;
phent_settype( myCrate, PH_RIGID, PH_BOX );
position= myCrate.x; // Gibt die ungefähre Position an
//myCrate.x= position + 10; // Das funktioniert nicht!!
phent_settype( myCrate, 0, 0 );
myCrate.x= position + 10; // unregistriert - jetzt kann die Position verändert werden
phent_settype( myCrate, PH_RIGID, PH_BOX ); // Starte von neuer Postion
Siehe auch:
phent_addforceglobal, phent_addforcelocal, ph_selectgroup
► Aktuelle Version Online