UE4卧倒趴着实现思路

基于ShooterGame例子,站立和蹲,引擎已经支持了,卧倒趴着和蹲类似一个状态,现在讨论卧倒趴着实现思路。

由于基于Character,自带了CapsuleComponent,并且是Character根节点,我们在卧倒趴着时候,修改CapsuleComponent方向可能影响其挂着子节点情况,所以添加卧倒趴着使用的CreepCapsuleComponent(绑定到CapsuleComponent,这样卧倒趴着移动旋转随着CapsuleComponent转动了),卧倒趴着的时候和角色骨骼模型贴合。卧趴先计算角色前后位置地面倾斜度,倾斜度构造一个朝向,设置该倾斜度到卧趴角色骨骼模型和CreepCapsuleComponent的原朝向里,这样他们相应贴着地面。

倾斜度计算思路:在角色头部正前后方向处(等于半身高距离处)分别设置碰撞开始位置,在角色脚步正前后方向处(等于半身高距离处)分别设置碰撞结束位置,角色前后分别往脚下进行碰撞检测,求出前后两个碰撞点F、B,在使用两个碰撞点构造正朝前方向,如:
    FRotator R = FRotationMatrix::MakeFromX(B - F).Rotator();
    R.Normalize();

    R.Pitch就是角色倾斜度了。

重载角色移动组件类,这些物理计算写在PhysWalking(float deltaTime, int32 Iterations)下,有卧倒趴着命令操作,就开始判断计算角色和地面倾斜度,然后设置到卧趴角色骨骼模型和CreepCapsuleComponent的原朝向里,进入卧倒趴着状态条件,角色动画蓝图相应根据其状态条件进入卧倒趴着系列动画。

注意点:

1.CreepCapsuleComponent默认没有碰撞,在卧倒趴着状态设置有碰撞,非卧倒趴着状态在设置默认没有碰撞。

2.CapsuleComponent和CreepCapsuleComponent设置互相碰撞忽略,CapsuleComponent可以设置尺寸小到一定程度,CreepCapsuleComponent和角色模型贴着,根据卧倒趴着情况设置合理尺寸。非卧倒趴着状态恢复尺寸。

3.还需要处理CreepCapsuleComponent碰撞影响玩家移动情况,可以重载主角CapsuleComponent的MoveComponentImpl函数,函数内使用CreepCapsuleComponent参考基类MoveComponentImpl函数模拟碰撞影响移动情况。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值