【问题标题】: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 施加力以移动它时,您可以通过多种方式来减慢该刚体的速度。

  1. 考虑将速度设置为零以立即停止移动
  2. 考虑限制GameObject 的速度
  3. 考虑在刚体行进的相反方向上增加额外的速度。

设置速度

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2014-02-03
    相关资源
    最近更新 更多