Skip to content

Latest commit

 

History

History
99 lines (61 loc) · 4.43 KB

File metadata and controls

99 lines (61 loc) · 4.43 KB

近战攻击实现原理

骨架处理

  • 打开骨架结构图,找到手部相关的骨架,添加 Socket
  • 右键你创建的 Socket >> Add Preview Asset >> 选择你的资产
  • 调整资产位置

在人物蓝图 >> Mesh 部分添加新的Mesh

  • 在新添加的 Mesh 下选择你的 StaticMesh 资产
  • Sockets >> Parent Socket >> 中选择之前在骨架里创建的 Socket
  • 设置碰撞可以选择无视碰撞,在剑和近战的攻击可以考虑使用更高效的线性追踪

击中实现

碰撞检测

优点

  • 简单易实现:只需为武器模型添加一个碰撞体,并在碰撞事件中处理伤害逻辑。
  • 更自然的物理反应:如果你的游戏中有物体被击中后会有物理反应(如被击飞),碰撞检测会更加自然。

缺点

  • 可能会有误判:如果碰撞体设置得不合适,可能会导致误判或漏判。
  • 性能开销:如果场景中有大量的碰撞体,可能会增加计算开销。

线追踪(Line Tracing)

优点

  • 精确:线追踪可以非常精确地检测玩家的攻击是否击中目标。
  • 灵活:可以根据需要调整线追踪的长度、方向等参数。
  • 性能开销较小:相对于碰撞检测,线追踪的性能开销通常较小。

缺点

  • 实现稍微复杂:需要设置线追踪的起点、终点、追踪类型等参数。
  • 可能不够自然:对于宽大的武器(如大剑),单一的线追踪可能不够自然,可能需要使用多条线追踪来模拟武器的宽度。

扫描追踪(Sweep Tracing)

这是一种结合了碰撞检测和线追踪的方法,可以检测线追踪路径上的所有碰撞体。

动画处理

Animation Montage

作用

Animation Montage是一种特殊的动画序列,它允许你将多个动画片段组合在一起,并在运行时播放它们。 它具有一个或多个Section,每个Section可以包含一个或多个动画片段。 它还支持动画的层叠,这意味着你可以在主动画上叠加其他动画,例如在角色跑步的同时播放射击动画。 应用场景:

角色的连招攻击:例如,在格斗游戏中,玩家可以执行一个连续的攻击组合。 角色的特殊动作:例如,角色的滑翔、跳跃、滚动等。 交互动画:例如,角色与环境或其他角色的互动,如开门、推车等。

Animation Notify

作用

Animation Notify是动画序列中的一个标记,它允许你在动画的特定帧上触发一个事件。 当动画播放到这个标记时,它会发送一个通知,这个通知可以被用来触发蓝图或代码中的逻辑。 应用场景:

触发音效:例如,在角色的脚步动画中,当脚碰到地面时播放脚步声。 触发特效:例如,在角色施放魔法时,当手势完成时触发魔法特效。 触发游戏逻辑:例如,在角色的攻击动画中,当武器击中目标时造成伤害。 同步动画与游戏逻辑:例如,在角色的跳跃动画中,确保在角色离开地面的那一刹那应用跳跃的力量。

属性实现

攻击速度

  • 设置角色属性:

在角色的蓝图或C++类中,定义一个名为“攻击速度”的变量。这个变量可以是一个浮点数,代表攻击的速度。例如,1.0是正常速度,2.0是两倍速度,0.5是半速等。

  • 修改动画速度:

在角色的动画蓝图中,你可以使用“Play Rate”来调整动画的播放速度。通常,这是通过“Set Play Rate”节点来实现的。 你可以将角色的“攻击速度”属性连接到“Set Play Rate”节点的输入,这样就可以根据角色的攻击速度来动态地调整动画的播放速度。

  • 动态更新攻击速度:

在游戏运行时,你可以根据需要动态地修改角色的“攻击速度”属性。例如,当角色获得一个加速药水时,你可以增加攻击速度。 每次修改“攻击速度”属性时,都需要更新动画的播放速度,以确保动画与角色的属性保持同步。

  • 注意事项:

动态地修改动画的播放速度可能会导致动画看起来不自然或失真,尤其是在极高或极低的速度下。因此,建议为动画的播放速度设置一个合理的上下限。 如果动画中包含Animation Notify,修改播放速度可能会影响这些通知的触发时间。需要确保游戏逻辑可以适应这种变化。

注意事项

  • 可以创建 Data Asset(Input) 输入类 5:03