You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
using UnityEngine;
 | 
						|
using System.Collections;
 | 
						|
using System;
 | 
						|
 | 
						|
namespace RootMotion.FinalIK {
 | 
						|
 | 
						|
	/// <summary>
 | 
						|
	/// BipedIK solver collection.
 | 
						|
	/// </summary>
 | 
						|
	[System.Serializable]
 | 
						|
	public class BipedIKSolvers {
 | 
						|
		/// <summary>
 | 
						|
		/// The left foot
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverLimb leftFoot = new IKSolverLimb(AvatarIKGoal.LeftFoot);
 | 
						|
		/// <summary>
 | 
						|
		/// The right foot.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverLimb rightFoot = new IKSolverLimb(AvatarIKGoal.RightFoot);
 | 
						|
		/// <summary>
 | 
						|
		/// The left hand.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverLimb leftHand = new IKSolverLimb(AvatarIKGoal.LeftHand);
 | 
						|
		/// <summary>
 | 
						|
		/// The right hand.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverLimb rightHand = new IKSolverLimb(AvatarIKGoal.RightHand);
 | 
						|
		/// <summary>
 | 
						|
		/// The spine.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverFABRIK spine = new IKSolverFABRIK();
 | 
						|
		/// <summary>
 | 
						|
		/// The Look At %IK.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverLookAt lookAt = new IKSolverLookAt();
 | 
						|
		/// <summary>
 | 
						|
		/// The Aim %IK. Rotates the spine to aim a transform's forward towards the target.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverAim aim = new IKSolverAim();
 | 
						|
		/// <summary>
 | 
						|
		/// %Constraints for manipulating the character's pelvis.
 | 
						|
		/// </summary>
 | 
						|
		public Constraints pelvis = new Constraints();
 | 
						|
 | 
						|
		/// <summary>
 | 
						|
		/// Gets the array containing all the limbs.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolverLimb[] limbs {
 | 
						|
			get {
 | 
						|
				if (_limbs == null || (_limbs != null && _limbs.Length != 4)) _limbs = new IKSolverLimb[4] { leftFoot, rightFoot, leftHand, rightHand };
 | 
						|
				return _limbs;
 | 
						|
			}	
 | 
						|
		}
 | 
						|
		private IKSolverLimb[] _limbs;
 | 
						|
		
 | 
						|
		/// <summary>
 | 
						|
		/// Gets the array containing all %IK solvers.
 | 
						|
		/// </summary>
 | 
						|
		public IKSolver[] ikSolvers {
 | 
						|
			get {
 | 
						|
				if (_ikSolvers == null || (_ikSolvers != null && _ikSolvers.Length != 7)) _ikSolvers = new IKSolver[7] { leftFoot, rightFoot, leftHand, rightHand, spine, lookAt, aim };
 | 
						|
				return _ikSolvers;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private IKSolver[] _ikSolvers;
 | 
						|
		
 | 
						|
		public void AssignReferences(BipedReferences references) {
 | 
						|
			// Assigning limbs from references
 | 
						|
			leftHand.SetChain(references.leftUpperArm, references.leftForearm, references.leftHand, references.root);
 | 
						|
			rightHand.SetChain(references.rightUpperArm, references.rightForearm, references.rightHand, references.root);
 | 
						|
			leftFoot.SetChain(references.leftThigh, references.leftCalf, references.leftFoot, references.root);
 | 
						|
			rightFoot.SetChain(references.rightThigh, references.rightCalf, references.rightFoot, references.root);
 | 
						|
 | 
						|
			// Assigning spine bones from references
 | 
						|
			spine.SetChain(references.spine, references.root);
 | 
						|
 | 
						|
			// Assigning lookAt bones from references
 | 
						|
			lookAt.SetChain(references.spine, references.head, references.eyes, references.root);
 | 
						|
 | 
						|
			// Assigning Aim bones from references
 | 
						|
			aim.SetChain(references.spine, references.root);
 | 
						|
 | 
						|
			leftFoot.goal = AvatarIKGoal.LeftFoot;
 | 
						|
			rightFoot.goal = AvatarIKGoal.RightFoot;
 | 
						|
			leftHand.goal = AvatarIKGoal.LeftHand;
 | 
						|
			rightHand.goal = AvatarIKGoal.RightHand;
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |