如何让角色在特定物体上触发高跳且不影响常规跳跃
特定物体触发高跳的实现方案
核心思路
先给目标平台做标记,让角色能识别自己是否站在高跳平台上,再针对性修改跳跃速度逻辑,同时保证平台碰撞正常不弹人。
步骤1:给高跳平台加标记
打开你要设置成高跳的物体蓝图/静态网格体:
- 给它加一个Actor标签,比如直接设为
HighJumpPlatform(在细节面板的「标签」栏添加即可); - 嫌麻烦的话也可以自定义碰撞通道,比如
HighJumpChannel,把平台碰撞预设里的这个通道设为Block,角色胶囊体对该通道设为Overlap——不过用标签操作更简单直接。
步骤2:在角色蓝图里检测站立平台
在你现有的「按住空格积累跳跃Z速度」逻辑里,插入一段检测:
- 用
Get Floor Actor节点获取当前脚下的Actor; - 接着用
Get Actor Tags节点,判断返回的标签数组里是否包含HighJumpPlatform; - 把这个判断结果存成布尔变量
IsOnHighJumpPlatform,方便后续逻辑调用。
步骤3:修改跳跃Z速度逻辑
基于你已有的按住空格递增速度的逻辑,做分支处理:
- 原来的基础跳跃Z速度(比如
JumpZVelocity变量),现在改成:如果IsOnHighJumpPlatform为真,就用更高的基础值(比如新增变量HighJumpBaseVelocity,设为1200这类数值);如果为假,就用常规基础值(比如800); - 还可以调整递增幅度,比如在高跳平台上按住空格时,每帧的速度增量比常规情况大,让高跳的高度上限更高;
- 注意要在按下空格开始积累速度时就做这个判断,确保整个积累过程都用高跳参数。
步骤4:保证平台碰撞不弹人
给高跳平台的碰撞做如下设置:
- 把平台的物理模式设为静态(别用动态物理,不然会被角色踩得晃动);
- 碰撞预设选
BlockAll,或者自定义设置:保证对Pawn的碰撞响应是Block,这样角色能稳定站在上面,既不会穿模也不会被弹开; - 如果之前平台有特殊碰撞设置,检查有没有把Pawn设成
Overlap或Ignore,改回Block即可。
内容的提问来源于stack exchange,提问作者ChaiDog
相关产品推荐
相关产品推荐

