pXcon_add (var
constraintType, ENTITY* entity1, ENTITY* entity2, var
intern_collision )
Erstellt ein Gelenk in entity1 und entity2. Der Typ des Gelenks wird über constraintType bestimmt. entity2 kann für die meisten Gelenke auf NULL gesetzt werden (mit Ausnahme von PH_WHEEL, das immer 2 Entities verlangt) - in diesem Fall wird entity1 stattdessen mit dem Weltkoordinatensystem verbunden. Manche Gelenke setzen automatisch Defaultwerte, PH_HINGE und PH_BALL setzen den Ankerpunkt so, dass er in der Mitte zwischen den Nullpunkten der Entities liegt.
Parameter:
constraintType |
Eine der unterstützten Gelenk-Konstanten PH_HINGE,
PH_WHEEL,
PH_BALL,
PH_SLIDER, PH_ROPE, PH_6DJOINT |
entity1 |
Erste Verbindungsentity |
entity2
|
Zweite Entity, Karosserie für ein Rad oder NULL für ein Gelenk mit einem Welt-Fixpunkt. Muss sich von entity1 unterscheiden. |
intern_collision |
1 = lasse entity1 und entity2 miteinander kollidieren, 0 = keine interne Kollision |
Rückgabewerte:
NxWheelShape* bzw.. NxJoint*-Pointer für weitere Gelenkmanipulationen, wenn erfolgreich, ansonsten NULL.
Geschwindigkeit:
Mittel
Beispiele:
function joints_test()
{
ENTITY* chain1 = ent_create("shell2.mdl",vector(-40,100,65),NULL);
ENTITY* chain2 = ent_create("shell2.mdl",vector(-40,100,39),NULL);
ENTITY* chain3 = ent_create("shell2.mdl",vector(-40,100,13),NULL);
set(chain1,PASSABLE);
set(chain2,PASSABLE);
set(chain3,PASSABLE);
pXent_settype(chain1,1,PH_CAPSULE);
pXent_settype(chain2,1,PH_CAPSULE);
pXent_settype(chain3,1,PH_CAPSULE);
pXcon_add ( PH_SLIDER, chain1, NULL, 0 );
pXcon_add ( PH_HINGE, chain2, chain1, 0 );
pXcon_add ( PH_BALL, chain3, chain2, 1 );
pXcon_setparams1 (chain1, vector(chain1.x,chain1.y,chain1.z+chain1.max_z), vector(0,-1,0), nullvector );
pXcon_setparams1 (chain2, vector(chain2.x,chain2.y,chain2.z+chain2.max_z), vector(-1,0,0), nullvector );
pXcon_setparams1 (chain3, vector(chain3.x,chain3.y,chain3.z+chain3.max_z), vector(0,-1,0), nullvector );
pXcon_setparams2 (chain1, vector(-1.6,1.6,50), NULL, NULL);
pXcon_setparams2 (chain2, vector(-45,45,0), NULL, NULL);
pXcon_setparams2 (chain3, vector(-45,45,0), NULL, NULL);
pXent_setsleep(chain1, 1);
pXent_setsleep(chain2, 1);
pXent_setsleep(chain3, 1);
}
Siehe auch:
Constraints, pXcon_remove,
pXcon_setparams1,
pXcon_setparams2,
pXcon_add