Unity Physics:如何限制重力移动的物体的旋转

时间:2018-07-28 17:07:17

标签: unity3d rotation game-physics physics-engine

我有一个子对象,一个铁杆(具有刚体和重力),并连接到长臂(带有刚体和isKinematic)。我只需要将铁杆的旋转角度从 1度限制到40度,这样它就不会落水并击中 Long Arm 。请参考附件图片以获取更多信息。我尝试了使用铰链接头及其 Limit 选项以及通过代码进行几种方法。但是我似乎无法解决这个问题。现在,我已将此脚本附加到 Iron Bar (铁条),但似乎没有任何作用。

public Transform targetTransform;
private Vector3 _currentAngle;
private Vector3 _targetAngle;
float rotationX;

void FixedUpdate () {

     transform.right = targetTransform.transform.right; //-- To make the Iron Bar follow player rotation

     rotationX = transform.eulerAngles.x;

     if (rotationX > 40) {
         _targetAngle = new Vector3 (40, transform.eulerAngles.y, transform.eulerAngles.z);
         _currentAngle = new Vector3 (Mathf.LerpAngle (transform.eulerAngles.x, _targetAngle.x, Time.deltaTime), Mathf.LerpAngle (transform.eulerAngles.y, _targetAngle.y, Time.deltaTime), Mathf.LerpAngle (transform.eulerAngles.z, _targetAngle.z, Time.deltaTime));
         transform.eulerAngles = _currentAngle;
     } else if (rotationX < 1) {
         _targetAngle = new Vector3 (1, transform.eulerAngles.y, transform.eulerAngles.z);
         _currentAngle = new Vector3 (Mathf.LerpAngle (transform.eulerAngles.x, _targetAngle.x, Time.deltaTime), Mathf.LerpAngle (transform.eulerAngles.y, _targetAngle.y, Time.deltaTime), Mathf.LerpAngle (transform.eulerAngles.z, _targetAngle.z, Time.deltaTime));
         transform.eulerAngles = _currentAngle;
     }

 }

希望您能提供任何帮助。感谢您的关注。

Limit rotation of Iron Bar from 1 to 40 degrees only

注意:这是一个修订后的问题,但与我已经部分解决的第一个问题有关。进行了修订以进一步澄清。

0 个答案:

没有答案