QuakeWiki needs help to get updated to a modern MediaWiki version. If you can help, mail spirit ät quaddicted or post in this thread, thanks! Otherwise the site might get turned into a static, read-only archive to avoid being hacked in the future.
traceline
From Quake Wiki
void traceline(vector start, vector end, float collisionType, entity ignore)
Usage[edit]
Fires out a line from the starting position to the ending position, colliding with anything based on the passed collision type. Sets the following globals:
- trace_allsolid
- If
TRUE, the trace was stuck entirely in solids.
- trace_startsolid
- If
TRUE, the trace started inside of a solid.
- trace_fraction
- The fraction of the total distance the trace traveled before stopping. Ranges from [0, 1].
- trace_endpos
- The position the trace stopped.
- trace_plane_normal
- The normal of the plane that the trace hit.
- trace_plane_dist
- The distance from the world origin of the plane that the trace hit. This is d in the plane equation ax + by + cz + d = 0.
- trace_ent
- The entity that the trace hit.
- trace_inopen
- If
TRUE, the trace traveled through open air.
- trace_inwater
- If
TRUE, the trace traveled through a liquid.
Parameters[edit]
- start
- The starting position of the trace.
- end
- The destination position of the trace.
- collisionType
- The type of entities considered valid when checking collision. Can be one of the following:
0(Collide with everything)1(Only collide with entities that have a solid type ofSOLID_BSP)2(Collide with everything but use an extended pseudo bounding box against entities with theFL_MONSTERflag)
- ignore
- The entity to ignore collision of while tracing.
Example[edit]
// This fires out a trace to see if it hit an entity. If it did, it deals damage
traceline(self.origin, self.origin + v_forward*128, 0, self);
if (trace_ent && trace_ent.takedamage != DAMAGE_NO)
T_Damage(trace_ent, self, self, 20);
