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.
		
		
		
		
		
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using UnityEngine;
 | 
						|
using RootMotion.FinalIK;
 | 
						|
 | 
						|
namespace RootMotion.FinalIK
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Bend goal object for FABRIK. Add this to a GameObject you wish FABRIK to bend towards.
 | 
						|
    /// </summary>
 | 
						|
    public class FABRIKBendGoal : MonoBehaviour
 | 
						|
    {
 | 
						|
 | 
						|
        public FABRIK ik;
 | 
						|
        [Range(0f, 1f)] public float weight = 1f;
 | 
						|
        
 | 
						|
        private void Start()
 | 
						|
        {
 | 
						|
            ik.solver.OnPreIteration += OnPreIteration;
 | 
						|
        }
 | 
						|
 | 
						|
        void OnPreIteration(int it)
 | 
						|
        {
 | 
						|
            if (it != 0) return;
 | 
						|
            if (weight <= 0f) return;
 | 
						|
 | 
						|
            Vector3 bendDirection = transform.position - ik.solver.bones[0].transform.position;
 | 
						|
            bendDirection *= weight;
 | 
						|
 | 
						|
            foreach (IKSolverFABRIK.Bone bone in ik.solver.bones)
 | 
						|
            {
 | 
						|
                bone.solverPosition += bendDirection;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private void OnDestroy()
 | 
						|
        {
 | 
						|
            if (ik != null) ik.solver.OnPreIteration -= OnPreIteration;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |