Exemplo n.º 1
0
Arquivo: Body.cs Projeto: Bgun67/Mech
    void MoveFoot(HumanBodyBones _type, Vector3 relativePosition)
    {
        JointDriver[] bones = skeleton.GetBones(_type);
        float[]       xAngles;
        if (photonView.IsMine)
        {
            xAngles = skeleton.CalculateAngles(bones, relativePosition, bones[0].GetPrimaryAxis());
            skeleton.SetConfiguration(_type, xAngles);
        }
        else
        {
            xAngles = skeleton.GetConfiguration(_type);
        }

        bones[0].rb.MoveRotation(bones[0].rb.rotation * Quaternion.Euler(0, relativePosition.x * 0.01f, 0));

        bones[0].DriveJoint(new Vector3(-xAngles[0] - xAngles[2], relativePosition.x, 0f), JointDriveState.Position);
        bones[1].DriveJoint(new Vector3(-xAngles[3] + 180f, 0f), JointDriveState.Position);
        bones[2].DriveJoint(new Vector3(-xAngles[1] + xAngles[0], 0f), JointDriveState.Position);


        Debug.DrawLine(bones[0].GetJointPos(), bones[0].GetJointPos() + bones[0].transform.TransformVector(relativePosition), Color.red);
        if (_type == HumanBodyBones.LeftFoot)
        {
            lines[0].SetPosition(0, bones[0].GetJointPos());
            lines[0].SetPosition(1, bones[0].GetJointPos() + bones[0].transform.TransformVector(relativePosition));
        }
        else
        {
            lines[1].SetPosition(0, bones[0].GetJointPos());
            lines[1].SetPosition(1, bones[0].GetJointPos() + bones[0].transform.TransformVector(relativePosition));
        }
    }