Dota 2 Workshop Tools/Scripting/API/Global.TraceHull=zh: Difference between revisions
< Dota 2 Workshop Tools | Scripting | API
Jump to navigation
Jump to search
(Created page with "{{Note | This page was previously automatically generated. Any changes may be overwritten}} Category:Dota2Function Category:Global == Function Description == ''' b...") |
No edit summary |
||
Line 8: | Line 8: | ||
''' bool TraceHull(table ''parameters'') ''' | ''' bool TraceHull(table ''parameters'') ''' | ||
沿线段追踪边界体。边界体中心沿线。 | |||
Line 14: | Line 14: | ||
;Example | ;Example | ||
<source lang="lua"> | <source lang="lua"> | ||
-- | -- 使用玩家边界体,从玩家的位置向前追踪100个单位。 | ||
-- | -- 如果命中,则会在命中位置绘制一条线。 | ||
local playerEnt = Entities:FindByClassname(nil, "player") | local playerEnt = Entities:FindByClassname(nil, "player") | ||
local startVector = playerEnt:GetCenter() | local startVector = playerEnt:GetCenter() | ||
Line 23: | Line 23: | ||
endpos = startVector + RotatePosition(Vector(0,0,0), playerEnt:GetAngles(), Vector(100, 0, 0)); | endpos = startVector + RotatePosition(Vector(0,0,0), playerEnt:GetAngles(), Vector(100, 0, 0)); | ||
ignore = playerEnt; | ignore = playerEnt; | ||
mask = 33636363; -- | mask = 33636363; -- L4D2脚本API中的TRACE_MASK_PLAYER_SOLID对于源2可能不正确。 | ||
min = playerEnt:GetBoundingMins(); | min = playerEnt:GetBoundingMins(); | ||
max = playerEnt:GetBoundingMaxs() | max = playerEnt:GetBoundingMaxs() | ||
Line 39: | Line 39: | ||
</source> | </source> | ||
== | == 参数 == | ||
{| class="standard-table" style="width: 50%;" | {| class="standard-table" style="width: 50%;" | ||
! | ! 类型 | ||
! | ! 名字 | ||
! | ! 介绍 | ||
|- | |- | ||
| table | | table | ||
| parameters | | parameters | ||
| | | 用于输入和输出的表。 | ||
|} | |} | ||
== | == 返回 == | ||
''bool'' - | ''bool'' - 追踪是否成功。这仅指示追踪已完成,而不是是否击中任何东西。 | ||
== Input Parameters == | == Input Parameters == | ||
传递到参数表以设置跟踪。 | |||
{| class="standard-table" style="width: 50%;" | {| class="standard-table" style="width: 50%;" | ||
! | ! 类型 | ||
! | ! 名字 | ||
! | ! 介绍 | ||
|- | |- | ||
| Vector | | Vector | ||
| startpos | | startpos | ||
| | | 指示追踪开始位置的全局向量。 | ||
|- | |- | ||
| Vector | | Vector | ||
| endpos | | endpos | ||
| | | 指示追踪结束位置的全局向量。 | ||
|- | |- | ||
| Vector | | Vector | ||
| min | | min | ||
| | | 边界体的最小范围。 | ||
|- | |- | ||
| Vector | | Vector | ||
| max | | max | ||
| | | 边界体的最大范围。 | ||
|- | |- | ||
| int | | int | ||
| mask | | mask | ||
| | | 碰撞类型位掩码。 | ||
|- | |- | ||
| CBaseEntity | | CBaseEntity | ||
| ignore | | ignore | ||
| | | 追踪时欲忽略的实体。 | ||
|} | |} | ||
== | == 输出参数 == | ||
本函数写到table中的成员。 | |||
{{Note | | {{Note | 如果未命中跟踪,则这些参数可能不存在。使用前检查是否为空。}} | ||
{| class="standard-table" style="width: 50%;" | {| class="standard-table" style="width: 50%;" | ||
! | ! 类型 | ||
! | ! 名字 | ||
! | ! 介绍 | ||
|- | |- | ||
| Vector | | Vector | ||
| pos | | pos | ||
| | | 存储沿边界体命中位置的全局向量。 | ||
|- | |- | ||
| float | | float | ||
| fraction | | fraction | ||
| | | 在追踪轴上移动距离的百分比(?) | ||
|- | |- | ||
| bool | | bool | ||
| hit | | hit | ||
| | | 是否命中。始终会存在。 | ||
|- | |- | ||
| CBaseEntity | | CBaseEntity | ||
| enthit | | enthit | ||
| | | 追踪命中的实体的句柄。 | ||
|- | |- | ||
| bool | | bool | ||
| startsolid | | startsolid | ||
| | | 追踪是否在实体内部开始。 {{Note | 如果为false,则此参数设置为 nil}} | ||
|- | |- | ||
| Vector | | Vector | ||
| normal | | normal | ||
| | | 命中的曲面的全局法线向量。 | ||
|} | |} |
Revision as of 04:51, 8 October 2023

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中的成员。

类型 | 名字 | 介绍 |
---|---|---|
Vector | pos | 存储沿边界体命中位置的全局向量。 |
float | fraction | 在追踪轴上移动距离的百分比(?) |
bool | hit | 是否命中。始终会存在。 |
CBaseEntity | enthit | 追踪命中的实体的句柄。 |
bool | startsolid | 追踪是否在实体内部开始。 ![]() |
Vector | normal | 命中的曲面的全局法线向量。 |