Dota 2 Workshop Tools/Scripting/API/Global.TraceHull=zh

From Valve Developer Community
Jump to navigation Jump to search
Note.pngNote: This page was previously automatically generated. Any changes may be overwritten

Function Description

bool TraceHull(table parameters)

沿线段追踪边界体。边界体中心沿线。


Example
-- 使用玩家边界体,从玩家的位置向前追踪100个单位。
-- 如果命中,则会在命中位置绘制一条线。
local playerEnt = Entities:FindByClassname(nil, "player")
local startVector = playerEnt:GetCenter()
local traceTable =
{
	startpos = startVector;
	endpos = startVector + RotatePosition(Vector(0,0,0), playerEnt:GetAngles(), Vector(100, 0, 0));
	ignore = playerEnt;
	mask =  33636363; -- L4D2脚本API中的TRACE_MASK_PLAYER_SOLID对于源2可能不正确。
	min = playerEnt:GetBoundingMins();
	max = playerEnt:GetBoundingMaxs()
}

TraceHull(traceTable)

if traceTable.hit 
then
	DebugDrawLine(traceTable.startpos, traceTable.pos, 0, 255, 0, false, 1)
	DebugDrawLine(traceTable.pos, traceTable.pos + traceTable.normal * 10, 0, 0, 255, false, 1)
else
	DebugDrawLine(traceTable.startpos, traceTable.endpos, 255, 0, 0, false, 1)
end

参数

类型 名字 介绍
table parameters 用于输入和输出的表。

返回

bool - 追踪是否成功。这仅指示追踪已完成,而不是是否击中任何东西。

Input Parameters

传递到参数表以设置跟踪。

类型 名字 介绍
Vector startpos 指示追踪开始位置的全局向量。
Vector endpos 指示追踪结束位置的全局向量。
Vector min 边界体的最小范围。
Vector max 边界体的最大范围。
int mask 碰撞类型位掩码。
CBaseEntity ignore 追踪时欲忽略的实体。

输出参数

本函数写到table中的成员。

Note.pngNote: 如果未命中跟踪,则这些参数可能不存在。使用前检查是否为空。
类型 名字 介绍
Vector pos 存储沿边界体命中位置的全局向量。
float fraction 在追踪轴上移动距离的百分比(?)
bool hit 是否命中。始终会存在。
CBaseEntity enthit 追踪命中的实体的句柄。
bool startsolid 追踪是否在实体内部开始。
Note.pngNote: 如果为false,则此参数设置为 nil
Vector normal 命中的曲面的全局法线向量。