原文链接: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