pXent_raycast (ENTITY* entity, VECTOR* dir, var ShapesType, var hitflag): void*

Liefert die erste Form zurück, die entlang des Strahls getroffen wird oder eine spezifische Information über die Form - das hängt vom hitflag ab, den Sie setzen.

Parameter:

entity Entity-Pointer, gibt die Startposition des Strahls
dir Richtung des Strahls
ShapesType Entities, die vom Strahl getroffen werden können:
NX_STATIC_SHAPES = treffe nur statische Formen.
NX_DYNAMIC_SHAPES = treffe nur dynamische Formen.
NX_ALL_SHAPES = treffe beide: statische & dynamische Formen.
hitflag Ermöglicht ein Spezifizieren Arten von Strahlenwurf:
NX_RAYCAST_SHAPE = die Funktion liefert die nächste Physikentity, die vom Strahl getroffen wurde zurück (default)
NX_RAYCAST_IMPACT = die Funktion liefert den Auftreffvektor in Weltkoordinaten zurück.
NX_RAYCAST_NORMAL = die Funktion liefert den Normalenvektor in Weltkoordinaten zurück.
NX_RAYCAST_FACE_INDEX = die Funktion liefert faceID zurück, interne FfaceID und 0 in einem Vektor.
NX_RAYCAST_DISTANCE = die Funktion liefert den Abstand zwischen der getroffenen Form und der Entity-Position zurück.
NX_RAYCAST_UV = die Funktion liefert die U- und V-Koordinaten zurück und 0 in einem Vektor.
NX_RAYCAST_FACE_NORMAL = die Funktion liefert den Normalenvektor in Weltkoordinaten zurück.
NX_RAYCAST_MATERIAL = die Funktion liefert den Materialien-Index der Form zurück.

Rückgabewerte:

ENTITY* oder VECTOR*, je nach Hitflag

Geschwindigkeit:

Schnell

Beispiele:

VECTOR* worldImpact = pXent_raycast ( pRL, vector(0,0,-1), NX_STATIC_SHAPES, NX_RAYCAST_IMPACT);
if(worldImpact.z < -800)
  pXent_addforceglobal (my, vector(0,0,1000), pRL.x );  
// display the "look at" entities
VECTOR* lookat = vector(1,0,0);
vec_rotate(lookat,my.pan);
hit_ent = pXent_raycast(my, lookat, NX_ALL_SHAPES, NX_RAYCAST_ENTITY); 
str_cpy(temp_str,"nothing"); 
str_cpy(format,"I see ");
if(hit_ent){
  str_for_entfile (temp_str, hit_ent);
  str_cpy(format,"I see a ");
}
str_cat(format,temp_str);
vec_set(temp,vector(my.x,my.y,my.z+30));
vec_to_screen ( temp, camera);

pan_setdigits(char_panel, 1, temp.x, temp.y, format, my_font, 0, 0);

Siehe auch:

pXcon_add, pXcon_getposition