private void LookAtTarget(Vector3 targetPosition) { Vector3 targetDirection = targetPosition - eyeTarget.bone.transform.position; Quaternion headRotation = eyeTarget.headTarget.head.bone.transform.rotation * eyeTarget.headTarget.head.bone.toTargetRotation; Vector3 headForward = headRotation * Vector3.forward; Vector3 headUp = headRotation * Vector3.up; Vector3 targetEyeAngles = Quaternion.FromToRotation(headForward, targetDirection).eulerAngles; Vector3 eyeAngles = UnityAngles.Clamp(targetEyeAngles, eyeTarget.bone.minAngles, eyeTarget.bone.maxAngles); targetDirection = Quaternion.Euler(eyeAngles) * headForward; eyeTarget.target.transform.rotation = Quaternion.LookRotation(targetDirection, headUp); }
public static float LimitKneeAngle(FootTarget.TargetedLowerLegBone lowerLeg, float angle) { return(UnityAngles.Clamp(angle, 0, lowerLeg.bone.maxAngle)); }
protected Vector3 LimitAngles(HumanoidTarget.TargetedBone bone, Vector3 angles) { angles = UnityAngles.Clamp(angles, bone.bone.minAngles, bone.bone.maxAngles); return(angles); }