当我碰到一个物体时,我有一个立方体在整个地方旋转。(相机和角色旋转)UNITY

时间:2018-03-11 05:16:11

标签: c# unity3d

我有一个简单的动作,可以根据我的外观移动前进。使相机跟随播放器。我遇到的问题是,无论何时我碰到一个物体,我的角色(连同相机)都会疯狂地开始旋转。 (我是编码的新手)

以下是我的角色所面对的移动代码:

public class Player : MonoBehaviour {
    public float movementSpeed = 10;
    public float turningSpeed = 60;
    public Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody> ();
    }

    void Update() {
        float horizontal = Input.GetAxis("Mouse X") * turningSpeed * 
Time.deltaTime;
        transform.Rotate(0, horizontal,0);

    float vertical = Input.GetAxis("Mouse Y")* turningSpeed * Time.deltaTime;
    transform.Rotate(vertical, 0, 0);

    float movement = Input.GetAxis("Foward") * movementSpeed * 
    Time.deltaTime;
    transform.Translate(0, 0,movement);

   }
}

(抱歉格式不正确) 鼠标X只是使它在鼠标的x轴上旋转(与y轴相同)。 Foward只是统一的垂直输入预设。 以下是lookAt播放器的代码:

public class LookAtCamera : MonoBehaviour {
    public GameObject target;

    void LateUpdate() {
        transform.LookAt(target.transform);
  }
}

1 个答案:

答案 0 :(得分:0)

<强>答案

我相信你的刚体受到的影响比你击中物体时发生的弹力更强烈。

可能的解决方案

取决于哪种对撞机类型充当您的腿,所涉及的对象的重量,您想要的行为以及解决方案可能会有所不同。

可能的解决方案1:

一个选项是冻结对象在其Rigidbody组件上的旋转,您可以决定哪些轴可以冻结旋转。如果被冻结,他们就不会受到外力的推动。

可能的解决方案2:

如果您希望播放器仅受脚本影响,您可以设置刚体运动,这意味着它只受脚本和动画的影响。这与设置为动态相反,而其他对象可能会影响它。

可能的解决方案3:

使用刚体的角度阻力和质量来减慢旋转速度。