这篇条目有关 Source引擎。如需详情,点击这里。

Zh/Logic measure movement: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
(Created page with "{{LanguageBar|logic_measure_movement|title=logic_measure_movement}} {{Source topicon}} {{CD|CLogicMeasureMovement|file1=logic_measure_movement.cpp}} {{this is a|逻辑实体|name=logic_measure_movement}} 此实体测量一个实体相对于另一个实体的移动,然后将该移动应用于第三个实体。 logic_measure_movement 的过程可以描述如下: 1. 获取“要测量的实体”的位置。假设它是 <code>[100 225 0]</code>。 2. 获取“测...")
 
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 2: Line 2:
{{CD|CLogicMeasureMovement|file1=logic_measure_movement.cpp}}
{{CD|CLogicMeasureMovement|file1=logic_measure_movement.cpp}}


{{this is a|逻辑实体|name=logic_measure_movement}} 此实体测量一个实体相对于另一个实体的移动,然后将该移动应用于第三个实体。
{{this is a|逻辑实体|name=logic_measure_movement}} 此实体会测量两个实体间的距离,之后用距离加到另一个移动实体,并将该位置应用于第四实体。
 
{{note|本文章由[[User:WoShiGeNiCheng|我是个昵称-hello]]翻译,如有不对地方请指出。本文章所讲述的实体比较复杂,建议自己建一个地图来测试理解。}}


logic_measure_movement 的过程可以描述如下:
logic_measure_movement 的过程可以描述如下:


1.  获取“要测量的实体”的位置。假设它是 <code>[100 225 0]</code>。
# 获取'''目标参考实体'''的位置。假设它是 <code>[100 225 0]</code>。
2.  获取“测量参考”的位置。假设它是 <code>[50 300 0]</code>。
# 获取'''源参考实体'''的位置。假设它是 <code>[50 300 0]</code>。
3.  将“要测量的实体”的位置减去“测量参考”的位置,创建一个“相对位置”差。在这种情况下,将是 <code>[100 225 0]</code> - <code>[50 300 0]</code>,等于 <code>[50 -75 0]</code>。
# 将'''目标参考实体'''的位置减去'''源参考实体'''的位置,成“相对位置”差。如<code>[100 225 0]</code> - <code>[50 300 0]</code> = <code>[50 -75 0]</code>。
4.  获取“移动参考”的位置。假设它是 <code>[150 50 100]</code>。
# 获取'''源实体'''的位置。假设它是 <code>[150 50 100]</code>。
5.  将“相对差值”位置加到“移动参考”的位置上。在这种情况下,将是 <code>[50 -75 0]</code> + <code>[150 50 100]</code>,等于 <code>[200 -25 100]</code>。
# 将“相对差值”的位置加'''源实体'''的位置。例如 <code>[50 -75 0]</code> + <code>[150 50 100]</code>,等于 <code>[200 -25 100]</code>。
6.  将“要移动的实体”传送到“相对差值”位置与“移动参考”位置的总和处,在这种情况下意味着实体被传送到 <code>[200 -25 100]</code>。
# 将'''目标实体'''传送到“相对差值”与'''源实体'''位置的总和处,所以源实体会被传送到 <code>[200 -25 100]</code>。


logic_measure_movement 非常灵活,可用于让一个实体模仿另一个房间中另一个实体的移动(例如,{{ent|point_camera}} 在 script_intro 中)。它也可以用作父子层级关系的替代方案,特别是因为它可以模拟物理对象上的父子关系,而物理对象不支持父子关系,通常使用 {{ent|phys_constraint}}。
logic_measure_movement 非常灵活,可用于让一个实体模仿另一个房间中另一个实体的移动(例如,{{ent|point_camera}} 在 script_intro 中)。它也可以用作父子层级关系的替代方案,特别是因为它可以模拟物理对象上的父子关系,而物理对象不支持父子关系,通常使用 {{ent|phys_constraint}}。
Line 20: Line 22:
== 键值 ==
== 键值 ==
{{KV Targetname}}
{{KV Targetname}}
{{KV|Entity to Measure|intn=MeasureTarget|target_destination|要测量其移动的实体。}}
{{KV|Entity to Measure|intn=MeasureTarget|target_destination|源实体,测量移动的实体。}}
{{KV|Measure Reference|intn=MeasureReference|target_destination|要测量的实体的移动将相对于此实体进行测量。}}
{{KV|Measure Reference|intn=MeasureReference|target_destination|源参考实体,要目标实体的移动距离将相对于此实体进行测量。}}
{{KV|Entity to Move|intn=Target|target_destination|此实体将被移动以模仿要测量的实体的运动。}}
{{KV|Entity to Move|intn=Target|target_destination|目标实体,让此实体模仿源实体的运动。}}
{{KV|Movement Reference|intn=TargetReference|target_destination|要移动的实体将相对于此实体移动。}}
{{KV|Movement Reference|intn=TargetReference|target_destination|目标参考实体。}}
{{KV|Movement scale|intn=TargetScale|float|
{{KV|Movement scale|intn=TargetScale|float|缩放比例,将移动距离除以比例之后再讲目标实体传送( 移动距离 / 比例 )。1 = 移动的距离不变,2 = 目标实体移动距离是测量距离的一半,0.5 = 目标实体移动距离是测量距离的两倍。}}
一个缩放比例,在将测量到的移动应用于要移动的实体之前,用它来除以测量到的移动。<br/> 1 = 目标实体移动的距离与测量到的实体相同,<br/> 2 = 目标实体移动的距离是测量到的实体的一半,<br/> 0.5 = 目标实体移动的距离是测量到的实体的两倍。
{{KV|Measurement Type|intn=MeasureType|choices|测量内容。}}
}}
{{KV|Measurement Type|intn=MeasureType|choices|要测量的内容。}}
:* 0 : 位置
:* 0 : 位置
:* 1 : 视线位置
:* 1 : 眼睛位置(可以以此捕捉玩家眼球的角度)


== 输入 ==
== 输入 ==
{{note|以下输入不支持将 <kbd>!activator/!caller/!self</kbd> 作为参数}}
{{note|以下输入不支持将 <kbd>!activator/!caller/!self</kbd> 作为参数}}


{{I|SetMeasureTarget|设置要测量的实体,应测量其移动。|param=string}}
{{I|SetMeasureTarget|设置源实体,应测量其移动。|param=string}}
{{I|SetMeasureReference|设置测量参考实体。|param=string}}
{{I|SetMeasureReference|设置源参考实体。|param=string}}
{{I|<s>Target</s>|<s>设置要移动的实体,该实体将被移动以模仿被测量的实体。</s>|param=string}}{{note|此输入在代码中不存在,仅存在于 FGD 中。请使用 <tt>SetTarget</tt> 代替。}}
{{I|<s>Target</s>|<s>设置目标实体,该实体将模仿源实体的运动。</s>|param=string}}{{note|此输入在代码中不存在,仅存在于 FGD 中。请使用 <tt>SetTarget</tt> 代替。}}
{{I|SetTarget|设置要移动的实体,该实体将被移动以模仿被测量的实体。|param=string|nofgd=1}}
{{I|SetTarget|设置目标实体,该实体将模仿源实体的运动。|param=string|nofgd=1}}
{{I|SetTargetReference|设置移动参考实体。|param=string}}
{{I|SetTargetReference|设置目标参考实体。|param=string}}
{{I|SetTargetScale|设置用于除以测量到的移动的缩放比例。|param=float}}
{{I|SetTargetScale|设置用于除移动距离的缩放比例。|param=float}}
{{I|Enable|启用 logic_measure_movement。}}
{{I|Enable|启用 logic_measure_movement。}}
{{I|Disable|禁用 logic_measure_movement。}}
{{I|Disable|禁用 logic_measure_movement。}}


<!-- 我是个昵称-hello 翻译 -->
<!-- 我是个昵称-hello 翻译 -->

Latest revision as of 21:26, 5 December 2025

English (en)中文 (zh)Translate (Translate)
C++ 类层级
CLogicMeasureMovement
CLogicalEntity
CServerOnlyEntity
CBaseEntity
C++ logic_measure_movement.cpp

logic_measure_movement是一个逻辑实体,可在所有的 起源 起源 游戏中使用。 此实体会测量两个实体间的距离,之后用距离加到另一个移动实体,并将该位置应用于第四实体。

Note.png注意:本文章由我是个昵称-hello翻译,如有不对地方请指出。本文章所讲述的实体比较复杂,建议自己建一个地图来测试理解。

logic_measure_movement 的过程可以描述如下:

  1. 获取目标参考实体的位置。假设它是 [100 225 0]
  2. 获取源参考实体的位置。假设它是 [50 300 0]
  3. 目标参考实体的位置减去源参考实体的位置,成“相对位置”差。如[100 225 0] - [50 300 0] = [50 -75 0]
  4. 获取源实体的位置。假设它是 [150 50 100]
  5. 将“相对差值”的位置加源实体的位置。例如 [50 -75 0] + [150 50 100],等于 [200 -25 100]
  6. 目标实体传送到“相对差值”与源实体位置的总和处,所以源实体会被传送到 [200 -25 100]

logic_measure_movement 非常灵活,可用于让一个实体模仿另一个房间中另一个实体的移动(例如,point_camera 在 script_intro 中)。它也可以用作父子层级关系的替代方案,特别是因为它可以模拟物理对象上的父子关系,而物理对象不支持父子关系,通常使用 phys_constraint

Warning.png警告:无法正确更新被移动对象的碰撞物理状态。
Cpp.png代码:默认情况下,logic_measure_movement 直接调用 SetAbsOrigin。改用 Teleport 可以正确更新实体插值,并且可能(或可能不)解决上述描述的碰撞物理警告。

键值

Name(en) (targetname) <target_source>[ Edit ]
这个名称是其他实体通过 输入/输出(en) 或其他 关键值(en)(如 parentnametarget) 来引用该实体时使用的标识符。
该名称也会显示在 Hammer 编辑器的 2D 视图和 实体报告(en) 中。
参见: 所有实体均可使用的 通用键值、输入与输出(en)
Entity to Measure (MeasureTarget) <target_destination>
源实体,测量移动的实体。
Measure Reference (MeasureReference) <target_destination>
源参考实体,要目标实体的移动距离将相对于此实体进行测量。
Entity to Move (Target) <target_destination>
目标实体,让此实体模仿源实体的运动。
Movement Reference (TargetReference) <target_destination>
目标参考实体。
Movement scale (TargetScale) <浮点型(en)>
Measurement Type (MeasureType) <choices>
测量内容。
  • 0 : 位置
  • 1 : 眼睛位置(可以以此捕捉玩家眼球的角度)

输入

Note.png注意:以下输入不支持将 !activator/!caller/!self 作为参数


SetMeasureTarget <字符串(en)>
设置源实体,应测量其移动。
SetMeasureReference <字符串(en)>
设置源参考实体。
Target <字符串(en)>
设置目标实体,该实体将模仿源实体的运动。
Note.png注意:此输入在代码中不存在,仅存在于 FGD 中。请使用 SetTarget 代替。
SetTarget <字符串(en)> 不存在于FGD!
设置目标实体,该实体将模仿源实体的运动。
SetTargetReference <字符串(en)>
设置目标参考实体。
SetTargetScale <浮点型(en)>
设置用于除移动距离的缩放比例。
Enable
启用 logic_measure_movement。
Disable
禁用 logic_measure_movement。