Ejemplo n.º 1
0
        public void ApplyConstraint(Transform sourceJoint)
        {
            if (weightedTargetJoints.Length == 0)
            {
                return;
            }

            sourceJoint.position = ConstraintWeightedTarget.GetWeightedPosition(weightedTargetJoints);
        }
Ejemplo n.º 2
0
        public void ApplyConstraint(Transform sourceJoint)
        {
            if (weightedTargetJoints.Length == 0)
            {
                return;
            }

            sourceJoint.rotation = ConstraintWeightedTarget.GetWeightedOrientation(weightedTargetJoints, worldSpace);
        }
Ejemplo n.º 3
0
        public void ApplyConstraint(Transform sourceJoint)
        {
            if (weightedTargetJoints.Length == 0)
            {
                return;
            }

            var weightedTargetPosition = ConstraintWeightedTarget.GetWeightedPosition(weightedTargetJoints);

            ms_lookAtVectors[(int)sourceLookAtAxis] = (weightedTargetPosition - sourceJoint.position).normalized * sourceLookAtAxisFlip;

            if (upLookAt)
            {
                if (upWorld)
                {
                    ms_lookAtVectors[(int)upSourceAxis] = ms_axisVectors[(int)Axis.Y] * upSourceAxisFlip;                     // Is this correct?
                }
                else
                {
                    ms_lookAtVectors[(int)upSourceAxis] = (upJoint.position - sourceJoint.position).normalized * upSourceAxisFlip;
                }
            }
            else
            {
                if (upWorld)
                {
                    ms_lookAtVectors[(int)upSourceAxis] = ms_axisVectors[(int)upTargetAxis] * upSourceAxisFlip;
                }
                else
                {
                    var weightedTargetOrientation = ConstraintWeightedTarget.GetWeightedOrientation(weightedTargetJoints, true);
                    ms_lookAtVectors[(int)upSourceAxis] = weightedTargetOrientation * ms_axisVectors[(int)upTargetAxis] * upSourceAxisFlip;
                }
            }

            ms_lookAtVectors[(int)implicitAxis] = Vector3.Cross(ms_lookAtVectors[(int)sourceLookAtAxis], ms_lookAtVectors[(int)upSourceAxis]);
            ms_lookAtVectors[(int)upSourceAxis] = Vector3.Cross(ms_lookAtVectors[(int)implicitAxis], ms_lookAtVectors[(int)sourceLookAtAxis]);

            sourceJoint.rotation = Quaternion.LookRotation(ms_lookAtVectors[2], ms_lookAtVectors[1]);
        }