首页>Game>source

我有一个使用 rigidbody的角色 ,而我正在使用 AddForce() 使其移动.所以我做 限制对角线速度.是的,确实可行,但是我的问题是增加了例如爆炸力.因此,如果爆炸力很高,它将仍然限制播放器的速度.我应该使用哪种方式来组合 rb.velocity = Vector3.ClampMagnitude(rb.velocity, maxSpeed) 和一个 movement that limits diagonal speed .至少给我一个提示,怎么办?

我这里唯一的主要问题是我实现限制对角线运动的方式.我想通过不使用 properly working explosion force toward the player来改善它 因此, Vector3.ClampMagnitude() 将对播放器正常工作.因为当爆炸力影响时,播放器的夹紧幅度也会限制速度。

那么任何人都可以提供一个线索,在不使用钳位幅度的情况下如何实现限制对角线运动?

我考虑过像这样正常化举动:

AddExplosionForce()

但是我意识到我正在使用 Vector3 move = transform.right * x + transform.forward * z; move = move.normalized * Time.deltaTime * moveSpeed; .即使我限制了对角线速度,它也会越来越快,因为没有maxSpeed.请帮忙。

AddForce()
最新回答
  • 2021-1-2
    1 #

    只需在AddExplosiveForce()函数中添加一个设置为true的isExploding布尔并将更新分为两部分,一个是if(isExploding),第二个是else块. / p>

    如果发生爆炸,请检查刚体的速度大小,以查看其是否小于最大速度.如果是这样,请将isExploding设置为false.如果不爆炸,则控制速度。

    您可能需要等待一帧,以在施加力后显示速度(必须集成加速度),如果是这样,只需确保在检查速度钳之后施加爆炸力即可。

  • control:Godot 3X实现俯仰,偏航和侧倾的平稳运动
  • unity:为什么我不能在此脚本中引用" targetVelocity"变量?