UE5蓝图节点-Sphere Trace by Channel

在 Unreal Engine 5 (UE5) 中,Sphere Trace by Channel 节点用于执行一个球形的射线追踪(Ray Trace),并根据指定的碰撞通道来检测与场景中物体的碰撞。这个节点在很多情况下非常有用,比如检测玩家周围的物体、实现近战攻击的命中检测等。

Sphere Trace by Channel 节点的参数

Sphere Trace by Channel 节点有几个重要的输入引脚和输出引脚,下面是对这些参数的详细解释:

输入引脚
  • Start:射线起点的位置。
  • End:射线终点的位置。
  • Radius:球体的半径。
  • Trace Channel:碰撞通道,用于指定哪些类型的物体可以被检测到。常见的通道包括 VisibilityCameraWorldStatic 等。
  • bTrace Complex:是否启用复杂碰撞几何体的检测。如果设置为 True,则会检测复杂的静态网格体;如果设置为 False,则只检测简单的碰撞盒。
  • bFind Initial Overlap:是否检测初始重叠。如果设置为 True,则会在起点处检测是否有重叠的物体。
  • bIgnore Self:是否忽略自身物体的碰撞。如果设置为 True,则不会检测到执行该节点的物体本身。
  • Actor to Ignore:需要忽略的特定 Actor。你可以在这里指定一个或多个 Actor,使其不参与碰撞检测。
  • bShow Trace:是否在编辑器中显示射线追踪的可视化效果。这在调试时非常有用。
  • bPersistent Show Trace:是否持续显示射线追踪的可视化效果。如果设置为 True,即使游戏停止,也会继续显示。
输出引脚
  • Out Hit:如果检测到碰撞,这里会返回一个 Hit Result 结构体,包含碰撞的详细信息,如碰撞位置、碰撞物体等。
  • Return Value:布尔值,表示是否检测到碰撞。如果检测到碰撞,返回 True;否则返回 False

示例用法

假设你正在开发一个 VR 游戏,希望在玩家挥动武器时检测到附近的敌人。你可以使用 Sphere Trace by Channel 节点来实现这一点。

  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. 处理输出
    • 连接 Return Value 引脚到一个分支节点(Branch Node),以便根据是否检测到碰撞执行不同的逻辑。
    • 如果检测到碰撞(Return ValueTrue),可以从 Out Hit 引脚获取碰撞信息,并进一步处理(例如,对敌人的伤害)。

伪代码示例

// 伪代码示例
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
            -> Get Out Hit (From Sphere Trace by Channel)
            -> Apply Damage to Hit Actor (Using Out Hit's Actor and Other Info)
        -> 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. 处理输出
    • Return Value 引脚连接到一个分支节点。
    • 在分支节点的 True 分支中,从 Out Hit 引脚获取碰撞信息,并应用相应的逻辑(例如,对敌人的伤害)。
    • 在分支节点的 False 分支中,处理未检测到碰撞的情况。

通过这种方式,你可以使用 Sphere Trace by Channel 节点来检测玩家周围的物体,并根据需要执行相应的逻辑。这对于实现近战攻击、环境交互等功能非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值