UE5蓝图节点-break hit result

在 Unreal Engine 5 (UE5) 中,Break Hit Result 节点用于将 Hit Result 结构体分解成其各个组成部分。Hit Result 结构体包含了射线追踪(如 Sphere Trace by ChannelLine Trace by Channel 等)的结果信息,包括碰撞的位置、法线、碰撞物体等详细数据。

Break Hit Result 节点的输出

Break Hit Result 节点会将 Hit Result 结构体分解成以下部分:

  • Actor:与射线发生碰撞的 Actor。
  • Component:与射线发生碰撞的组件。
  • Bone Name:如果碰撞发生在骨骼网格体上,这里会包含碰撞的骨骼名称。
  • Location:碰撞发生的确切位置。
  • Impact Point:射线与物体表面的交点位置。
  • Normal:碰撞点处的法线向量。
  • Impact Normal:射线与物体表面交点处的法线向量。
  • Face Index:碰撞面的索引(如果适用)。
  • Trace Start:射线的起点。
  • Trace End:射线的终点。
  • Distance:从射线起点到碰撞点的距离。
  • Time:从射线起点到碰撞点的时间(通常是归一化的距离)。
  • Item:如果使用了物理材质,这里会包含相关的物理材质信息。
  • Material:碰撞点处的材质。
  • Physics Material:碰撞点处的物理材质。
  • Body Index:碰撞体的索引(如果适用)。

示例用法

假设你正在开发一个 VR 游戏,并且希望在玩家挥动武器时检测到附近的敌人,并获取详细的碰撞信息。你可以使用 Sphere Trace by ChannelBreak Hit Result 节点来实现这一点。

  1. 创建蓝图
    • 打开你的角色蓝图或武器蓝图。
  1. 添加 Sphere Trace by Channel 节点
    • 在事件图表中,右键点击空白区域,搜索并添加 Sphere Trace by Channel 节点。
  1. 设置输入引脚
    • Start:设置为武器的末端位置(例如,武器的尖端)。
    • End:设置为武器末端位置加上一个偏移量(例如,武器的攻击范围)。
    • Radius:设置为一个合适的半径,例如 10.0 或其他适合的值。
    • Trace Channel:选择一个合适的碰撞通道,例如 Pawn 或自定义的 Enemy 通道。
    • bTrace Complex:设置为 True 以检测复杂的碰撞几何体。
    • bFind Initial Overlap:设置为 True 以检测起点处的重叠。
    • bIgnore Self:设置为 True 以忽略自身的碰撞。
    • Actor to Ignore:如果有需要忽略的特定 Actor,可以在这里指定。
    • bShow TracebPersistent Show Trace:在调试时设置为 True 以显示射线追踪的效果。
  1. 添加 Break Hit Result 节点
    • 右键点击事件图表,搜索并添加 Break Hit Result 节点。
    • Sphere Trace by Channel 节点的 Out Hit 引脚连接到 Break Hit Result 节点的 In Hit 引脚。
  1. 处理输出
    • 使用 Break Hit Result 节点的输出来获取详细的碰撞信息,并根据需要执行相应的逻辑。

伪代码示例

// 伪代码示例
Event Tick
    -> Get Weapon Tip Position (Vector)
    -> Add Vector (Weapon Tip Position, Attack Range Vector)
    -> Sphere Trace by Channel (Start: Weapon Tip Position, End: New Vector, Radius: 10.0, Trace Channel: Enemy, bTrace Complex: True, bFind Initial Overlap: True, bIgnore Self: True)
    -> Branch (Condition: Return Value from Sphere Trace by Channel)
        -> If True
            -> Break Hit Result (In Hit: Out Hit from Sphere Trace by Channel)
            -> Get Hit Actor (From Break Hit Result)
            -> Apply Damage to Hit Actor (Using Hit Actor and Other Info from Break Hit Result)
        -> If False
            -> No Collision Detected

具体步骤

  1. 打开蓝图
    • 打开你的角色蓝图或武器蓝图。
  1. 添加 Sphere Trace by Channel 节点
    • 右键点击事件图表,搜索并添加 Sphere Trace by Channel 节点。
  1. 设置输入引脚
    • 将武器的末端位置连接到 Start 引脚。
    • 使用 Add Vector 节点将一个偏移量加到武器末端位置上,并将结果连接到 End 引脚。
    • 设置 Radius 为 10.0 或其他合适的值。
    • 选择 Trace ChannelEnemy 或其他合适的通道。
    • 设置 bTrace ComplexTrue
    • 设置 bFind Initial OverlapTrue
    • 设置 bIgnore SelfTrue
    • 根据需要设置 Actor to Ignore
    • 在调试时设置 bShow TracebPersistent Show TraceTrue
  1. 添加 Break Hit Result 节点
    • 右键点击事件图表,搜索并添加 Break Hit Result 节点。
    • Sphere Trace by Channel 节点的 Out Hit 引脚连接到 Break Hit Result 节点的 In Hit 引脚。
  1. 处理输出
    • Break Hit Result 节点的输出连接到适当的节点,例如:
      • 获取 Hit Actor 并应用伤害。
      • 获取 Impact Point 以显示命中效果。
      • 获取 Normal 以计算反弹方向或其他物理效果。

通过这种方式,你可以使用 Break Hit Result 节点来获取详细的碰撞信息,并根据需要执行相应的逻辑。这对于实现近战攻击、环境交互等功能非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值