解决角色移动时出现抖动的问题

让角色移动,使用了很多如下方法:

一、遵循刚体在FixUpdata中使用MovePosition方法移动,出现超大晃动

if (buttonDown == true && CanMove() == true)
    mRigidbody.MovePosition(transform.position + cameraTransform.forward * Time.deltaTime * moveSpeed);

二、解决大部分抖动,但碰撞有的地方仍然会较大晃动

if (buttonDown == true && CanMove() == true)
{
    moveDirection.Set(cameraTransform.forward.x, 0, cameraTransform.forward.z);
    transform.Translate(cameraTransform.forward * Time.deltaTime * moveSpeed);
}

三、刚体施加力的作用使其移动,解决全部抖动,但有一点缺陷,当与物体发生碰撞,并且行走方向与碰撞体的角度较小时,会停止移动,此时只能加大力大小的倍数

if (buttonDown == true && CanMove() == true && mRigidbody.velocity.magnitude <= maxSpeed)
{
    moveDirection.Set(cameraTransform.forward.x, 0, cameraTransform.forward.z);
    if(mRigidbody.velocity.magnitude < maxSpeed/2)
                mRigidbody.AddForce(moveDirection * moveSpeedParam * 5);
    else
        mRigidbody.AddForce(moveDirection * moveSpeedParam);
}

但是加大倍数moveSpeedParam 到一定值后,会在没有碰撞时,启动速度和行走速度特快,maxSpeed对其限制不了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值