Dota 2 Workshop Tools/Scripting/API/Global.TraceCollideable=zh
< Dota 2 Workshop Tools | Scripting | API
This article has no links to other VDC articles. Please help improve this article by adding links that are relevant to the context within the existing text.
January 2024
January 2024
Note: This page was previously automatically generated. Any changes may be overwritten
函数介绍
bool TraceCollideable(table parameters)
对单个实体执行光线跟踪。可以使用“mins”和“maxs”参数添加以实体为中心的额外边界框。
- Example
-- 沿轨迹从玩家的位置向前追踪100个单位,试图找到一个名为“my_prop”的实体。
-- 如果命中,将沿曲面法线在命中位置绘制一条线。
local playerEnt = Entities:FindByClassname(nil, "player")
local startVector = playerEnt:GetOrigin() + Vector(0, 0, 32)
local traceTable =
{
startpos = startVector;
-- 玩家前方100个单位的玩家位置
endpos = startVector + RotatePosition(Vector(0,0,0), playerEnt:GetAngles(), Vector(100, 0, 0));
ent = Entities:FindByName(nil, "my_prop"); -- Traces the entity named "my_prop"
-- 在模型上添加一个额外的20 x 20 x 20边界体。
mins = Vector(-10, -10, -10 );
maxs = Vector(10, 10, 10 )
}
TraceCollideable(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 - 追踪是否成功。这仅表示追踪已完成,而不是是否击中任何东西。
输入参数
传递到参数表以设置跟踪。
类型 | 名字 | 介绍 |
---|---|---|
Vector | startpos | 从指定全局向量处开始追踪。 |
Vector | endpos | 从指定全局向量处结束追踪。 |
CBaseEntity | ent | 欲追踪的实体。 |
Vector | mins | (可选)边界体的最小坐标。实体本地向量。 |
Vector | maxs | (可选)边界体的最大坐标。实体本地向量。 |
输出参数
被本函数添加到表中的成员。
Note: 如果未命中,则这些参数可能不存在。使用前检查是否为空。
类型 | 名 | 介绍 |
---|---|---|
Vector | pos | 存储命中位置的全局向量。 |
float | fraction | 在追踪轴上移动距离的百分比(?) |
bool | hit | 是否命中。始终会存在。 |
bool | startsolid | 跟踪是否在实体内部开始。 Note: 如果为false,则此参数设置为 nil
|
Vector | normal | 命中的曲面的全局法线向量。 |