我有一个使用
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-21 #
相关问题
- unity:如何正确停止滑动unitymovement2021-01-02 21:25
- c#:如何解决Unity中的"无法从复合读取类型为Vector2的值"错误?unityc#movementinputjumping2020-12-05 00:56
- unity:为什么在脚本中ForceModeVelocityChange可以工作,而Rigidbodyvelocity =…不能工作?unityc#movementjumping2020-12-04 00:24
只需在AddExplosiveForce()函数中添加一个设置为true的isExploding布尔并将更新分为两部分,一个是if(isExploding),第二个是else块. / p>
如果发生爆炸,请检查刚体的速度大小,以查看其是否小于最大速度.如果是这样,请将isExploding设置为false.如果不爆炸,则控制速度。
您可能需要等待一帧,以在施加力后显示速度(必须集成加速度),如果是这样,只需确保在检查速度钳之后施加爆炸力即可。