原文連結: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