Raycast
Shape tests de ligne de vue depuis la caméra, une entité, deux points ou une coord écran.
Shape tests de ligne de vue depuis la caméra, une entité, deux points ou une coord écran.
lib.raycast lance des shape tests de ligne de vue et renvoie un RaycastResult uniforme. Vise depuis
la caméra gameplay, le forward vector d'une entité, deux points du monde, ou une coordonnée écran — sans
réécrire StartShapeTestLosProbe à la main.
local hit = lib.raycast.fromCamera(20.0)
if hit.hit then
print('vise', hit.entity, hit.coords)
endChaque fonction renvoie un RaycastResult :
| Champ | Type | Description |
|---|---|---|
hit | boolean | Si quelque chose a été touché. Les autres champs ne sont valides que si true. |
coords | vector3 | Point d'impact. |
normal | vector3 | Normale de la surface à l'impact. |
entity | number | Handle de l'entité touchée (0 si aucune). |
material | number | Hash de matériau GTA (asphalte, verre…), pas une string. |
hitbooleantrue.coordsvector3normalvector3entitynumber0 si aucune).materialnumber| Fonction | Description |
|---|---|
fromCamera(distance, flags?) | Depuis la caméra gameplay dans la direction du regard. Ignore le ped local. |
fromEntity(entity, distance, flags?) | Depuis une entité dans son forward vector. Ignore cette entité. |
fromCoords(origin, target, flags?) | Entre deux points absolus. N'ignore rien. |
fromScreen(screenX, screenY, distance, flags?) | Depuis la caméra rendue à travers une coord écran normalisée (0..1). Pour le pointage au curseur. |
fromCamera(distance, flags?)fromEntity(entity, distance, flags?)fromCoords(origin, target, flags?)fromScreen(screenX, screenY, distance, flags?)0..1). Pour le pointage au curseur.flags est le bitmask GTA des hits (défaut -1 = tout) : 1 map · 2 véhicule · 4 ped · 8 objet ·
16 ragdoll · 32 verre. Combine-les — 2 + 8 ne touche que véhicules et objets.
local front = lib.raycast.fromEntity(cache.vehicle, 50.0, 2 + 8)
if front.hit then print('obstacle devant le véhicule') end
local los = lib.raycast.fromCoords(GetEntityCoords(cache.ped), targetCoords, 1)
if not los.hit then print('ligne de vue dégagée') end
local cursor = lib.raycast.fromScreen(0.5, 0.5, 100.0)
print('centre de l ecran:', cursor.entity)coords, normal, entity et material sont des valeurs poubelles tant que hit == true n'est pas
vrai — teste toujours hit.hit d'abord. Le défaut flags = -1 touche tout, y compris la végétation et
les props décoratifs, alors filtre explicitement si tu veux de la géométrie pertinente. fromScreen
crée et détruit une caméra temporaire à chaque appel — ne le lance jamais dans une boucle Wait(0),
throttle à 50–100 ms.