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

prop_ragdoll

From Valve Developer Community
< Zh
Jump to: navigation, search
English (en)中文 (zh)Translate (Translate)
参见:  有关创建布娃娃的具体细节,详见$collisionjoints.
类层级
CRagdollProp
CBaseAnimating
CBaseEntity
physics_prop_ragdoll.cpp
不像NPC死亡时生成的布娃娃,地图制作者放置的布娃娃可以与环境动态的交互

prop_ragdoll是一个点实体(en),可在所有的 起源 起源 游戏中使用。是一个具有物理性质布娃娃。布娃娃是一组约束在一起的物理对象的集合,用于模拟像尸体这样的关节物体,它们的物理模拟有着昂贵的性能开销.

Warning.png警告:该实体生成的是服务端布娃娃,会与任何道具发生碰撞,但这会造成大量网络开销。通过默认休眠(勾选Start asleep Flag),禁用物理运动或禁用与动态道具的碰撞(不存在于FGD!在soild键值中使用0为参数),并仅在需要时启用物理运动,可以显著减少网络开销
Icon-Bug.png错误:通过Hammer设置自定义动作并勾选Start Asleep Flag会导致渲染框无法更新,在生成时唤醒布娃娃一帧时间后再次休眠即可解决此问题  [todo tested in?]
Icon-Bug.png错误:传送门2 传送门2中,布娃娃无法穿过传送门,这也在传送门 传送门中经常发生  [todo tested in?]
Icon-Bug.png错误:预测时会忽略布娃娃,这会在触摸布娃娃时导致大量的预测错误  [todo tested in?]
AltNames.pngAltNames: 此实体也绑定到 physics_prop_ragdoll
黑山 黑山特定提示和漏洞
Note.png注意:原始版本仍可作为prop_ragdoll_original使用。区别在于:
  • prop_ragdoll_original无法通过爆炸造成碎尸
  • 如果没有在Spawnflags勾选[4] Debris,撬棍的攻击可以击中prop_ragdoll_original(由于某些原因,撬棍的攻击判定会跳过prop_ragdoll
  • prop_ragdoll_original没有流血效果且不会产生印花
  • prop_ragdoll_original无法被拾取
  • prop_ragdoll_original有真实的子弹推力效果
Icon-Bug.png错误:
  • 自Steam首发版本开始,除非进行存读档,NPC尸体转换成的服务端布娃娃无法被碎尸,已碎尸的布娃娃创建的尸块也是如此,如果你需要在mod中使用服务端布娃娃,请使用该插件
  • 自Steam首发版本开始,撬棍的攻击判定会无视/跳过服务端布娃娃
  • 拌雷的爆炸不会导致碎尸
  • 在多人模式中,在Spawnflags勾选[4] Debris的布娃娃不会生成印花纹理和血迹,如果禁用此Flag,布娃娃仍然不会生成血液特效和在玩家的手臂模型上生成血迹  [todo tested in?]


尸体布娃娃/布娃娃转换

在NPC/玩家死亡,或者接收到BecomeRagdoll输入的情况下,通常会创建一个客户端布娃娃,并将大部分动画和视觉数据复制到其中。与服务端布娃娃不同的是,这些客户端布娃娃完全基于每个客户端进行处理,在性能开销方面比服务端布娃娃要廉价,简单的多,但代价是在服务端上几乎不存在,在客户端的视角之间存在不一致,并且只会与在客户端上具有物理属性的道具互动(比如worldspawn

然而,当NPC处于以下任意一种情况时,其会变成服务端布娃娃

prop_ragdoll一样,这些服务端的尸体布娃娃会与物理道具和其他东西发生碰撞,但它们被标记为debris,不会互相产生碰撞,不像客户端布娃娃,它们也不会与自身产生碰撞(已在Entropy : Zero 2 Entropy : Zero 2黑山 黑山中被修复)。这通常被认为是有意为之,皆在减少性能/网络开销

Icon-Bug.png错误:服务端布娃娃不会保存血液印花,已在Mapbase Mapbase黑山 黑山中被修复  [todo tested in?]
Note.png注意:以上的大部分内容虽尚未进行进一步的测试,但理论上也适用与玩家
Warning.png警告:虽然大部分的动画/视觉数据都被复制到了客户端布娃娃上,但诸如淡入/淡出距离一类的数据并没有被复制
Cpp-16px.png代码:对于服务端布娃娃,可以修改baseanimating.cpp中的CBaseAnimating::CopyAnimationDataFrom(),而对于客户端布娃娃,则可以修改c_baseanimating.cpp中的C_BaseAnimating::CreateRagdollCopy()

Keyvalues

Name(en) (targetname) <string(en)>
其他实体引用该实体的目标名称。
Override Animation (angleOverride) <string(en)>
index,x y z,...为格式表示的关节旋转列表,由引擎通过hammer_update_entity指令或Hammer++ Hammer++的物理模拟工具填充。除非需要清空,否则不要手动修改
非V社游戏特定内容 Garry's Mod黑山
Health (health) <integer(en)> (存在于 黑山 之中) (也存在于 Entropy : Zero 2 Entropy : Zero 2 之中)
布娃娃要被碎尸所需受到的伤害值
Character Manifest Mimic Name (MimicName) <string(en)> (存在于 黑山 之中)
从角色清单中选择一个名字或实体类名来给布娃娃穿衣

GMODSandbox:

Allow Physics Gun (gmod_allowphysgun) <boolean(en)> (存在于 Garry's Mod 之中)
If set, players cannot use Physics Gun on this entity.
Sandbox Tool Whitelist (gmod_allowtools) <string(en)> (存在于 Garry's Mod 之中)
If set, only given tools can be used on this entity. You need to supply the tool class names, the names of the .lua files of those tools. This also includes the context menu properties!

Flags

  •  [4] : Debris
       不会与玩家或其他碎片交互
  •  [4096] : Use 'Least Recently Used' Retirement
       不存在于FGD!使用LRU机制,“LRU”指的是起源的布娃娃清理系统,该系统会自动删除未使用的布娃娃。由NPC生成的服务端布娃娃会自动添加到此系统中,但是由地图制作者放置的布娃娃不会
  •  [8192] : Allow Dissolve
       允许被分解
  •  [16384] : Motion Disabled
       禁用物理运动
  •  [32768] : Allow stretch
       允许拉伸
  •  [65536] : Start asleep
       默认休眠

Inputs

StartRagdollBoogie
开始布娃娃抖动效果,持续5秒
Icon-Bug.png错误:这个输入实际上应该使用一个参数来指定抖动时长,但在代码中的数据类型描述时使用了错误的字段类型  [todo tested in?]
Cpp-16px.png代码修复:CRagdollProp的数据类型中,查找DEFINE_INPUTFUNC( FIELD_VOID, "StartRagdollBoogie", InputStartRadgollBoogie )并将FIELD_VOID替换为FIELD_FLOAT.
EnableMotion / DisableMotion
启用/禁用物理运动
FadeAndRemove  (存在于自 半衰期2:第二章 以来)
淡出并删除自身,附加参数=淡出所需时间
AllowBloodPool  (存在于 黑山 之中) 不存在于FGD!
如果放置在固体上,则会产生一摊血迹(粒子特效)
Note.png注意:不适用于prop_ragdoll_originalprop_ragdoll_attached.

参见