天天看点

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