天天看點

HingeJoint注意點——轉自Pig_3800

原文連結:http://blog.csdn.net/pig_3800/article/details/47145083

private HingeJoint hinge;
    void Start () {
        hinge = GetComponent<HingeJoint>();
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonDown (0)) {
            JointMotor motor = hinge.motor;
            motor.force = -100;
            motor.targetVelocity = 100;
            motor.freeSpin = false;
            hinge.motor = motor;
            hinge.useMotor = true;
        }
    }      
  • motor.targetVelocity = 100;這個是要達到的速度為100
  • motor.force = 100;這個是為了達到這個速度所施加的力
  • 這裡要注意了,如果force是正數,那麼他是按逆時針旋轉,負數就不用說了吧
  • 重點說下UseLimits這東西。裡面的Min和Max
  • Min和Max是你所能達到的最大和最小角度,然後順時針是

    Min->Max

    ,逆時針是

    Max->Min

  • 這個地方一定要注意,不然你會發現,你設定完UseLimits後,可能不轉動了
  • 最後一點就是如果你要繞一個軸旋轉,記得要在Rigidbody裡面設定下Constraints,Hinjoint
  • 裡面肯定也要設定下,下圖我以繞Y軸逆時針旋轉為例: 
  • HingeJoint注意點——轉自Pig_3800
  • 這裡有個問題,我沒搞明白。就是上圖中Max為90,正常情況下,應該順時針到90度結束。可是按上面的代碼及設定,把motor.force = -100改為100後,逆時針正常,但是順時針隻能達到70多度。如果按下面的圖設定的話,又是正常,實在蛋疼,這是個Bug嗎?有木有大牛知道什麼回事?我版本是5.1.2f1的,不知道其他版本會不會。 
  • HingeJoint注意點——轉自Pig_3800
  • 這個是不正常情況下的截圖 
  • HingeJoint注意點——轉自Pig_3800