我有一个简单的动作,可以根据我的外观移动前进。使相机跟随播放器。我遇到的问题是,无论何时我碰到一个物体,我的角色(连同相机)都会疯狂地开始旋转。 (我是编码的新手)
以下是我的角色所面对的移动代码:
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);
}
}
答案 0 :(得分:0)
<强>答案强>
我相信你的刚体受到的影响比你击中物体时发生的弹力更强烈。
可能的解决方案
取决于哪种对撞机类型充当您的腿,所涉及的对象的重量,您想要的行为以及解决方案可能会有所不同。
可能的解决方案1:
一个选项是冻结对象在其Rigidbody组件上的旋转,您可以决定哪些轴可以冻结旋转。如果被冻结,他们就不会受到外力的推动。
可能的解决方案2:
如果您希望播放器仅受脚本影响,您可以设置刚体运动,这意味着它只受脚本和动画的影响。这与设置为动态相反,而其他对象可能会影响它。
可能的解决方案3:
使用刚体的角度阻力和质量来减慢旋转速度。