Unreal Engine 4 —— PhysFlying时动态物体的物理碰撞bug分析与解决方案

这篇博客介绍了当character角色处于flying状态并且速度为0时,游戏场景内的动态物体可以穿过角色的bug以及对应解决方案。

该bug在character处于swimming状态时一样会出现,其原理与解决方案都是类似的。


Bug重现

  1. 将character角色的MovementMode设定为MOVE_Flying
  2. 调用StopMovementImmediately()函数将其速度置为(0.f, 0.f, 0.f)
  3. 让场景中的动态物体向character角色运动,此时会发现物体将穿过角色

Bug Review

该bug已提交给Epic Games,对应issue为UE-35995

该bug官方预计在4.15版本进行修复,本博客提供的只是可行的workaround。

Bug分析

这个bug的玄机藏在UCharacterMovementComponent::PhysFlying(float deltaTime, int32 Iterations)函数中。在该函数里有代码如下:

    FVector OldLocation = UpdatedComponent->GetCo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值