【问题标题】:Need Help in Rigidbody based FPS Controller in UnityUnity 中基于刚体的 FPS 控制器需要帮助
【发布时间】:2021-05-15 07:47:53
【问题描述】:
我正在学习统一并尝试创建一个 fps 游戏,但是在制作它的控制器时我遇到了一些问题,比如我想移动玩家,但是使用刚体而不是角色控制器,因为我希望它完全交互环境,但是当我尝试使用 addforce 让玩家移动时它工作正常但是当我停止按下移动键时,即使玩家移动了一段时间,我想要更快速的移动,我应该使用 addForce 还是应该移动玩家通过使用速度,当我停止按下移动按钮时,你能帮我找到反向移动吗,使用脚本而不是增加摩擦
【问题讨论】:
标签:
c#
unity3d
controller
game-physics
rigid-bodies
【解决方案1】:
当您向Rigidbody 施加力以移动它时,您可以通过多种方式来减慢该刚体的速度。
- 考虑将速度设置为零以立即停止移动
- 考虑限制
GameObject 的速度
- 考虑在刚体行进的相反方向上增加额外的速度。
设置速度
if(stopPlayer)
{
rigidbody.Velocity = new Vector3();
}
限制速度
Vector3 velocity = rigidbody.Velocity;
velocity.x = Mathf.Clamp(velocity.x, -MaxVelocity,MaxVelocity);
velocity.y = Mathf.Clamp(velocity.y, -MaxVelocity,MaxVelocity);
velocity.z = Mathf.Clamp(velocity.z, -MaxVelocity,MaxVelocity);
rigidbody.Velocity = velocity;
添加相反方向的速度
Vector3 velocity = rigidbody.Velocity;
rigidbody.AddForce(-velocity * SlowDownModifier * Time.fixedDeltaTime);