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

logic_measure_movement

From Valve Developer Community
< Zh
Revision as of 21:25, 5 December 2025 by WoShiGeNiCheng (talk | contribs)
Jump to navigation Jump to search
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。