- Home /
 
              This question was 
             closed Feb 11, 2018 at 12:40 PM by 
             StillUnderlevel for the following reason: 
             
 
            The question is answered, right answer was accepted
 
               Question by 
               StillUnderlevel · Feb 10, 2018 at 04:26 PM · 
                c#hinge joint  
              
 
              How to edit Hinge Joint Target Position in a script?
I'm trying to find a way to edit the value of Target Position in the hinge Joint component in a C# script.
Edit: My main source of confusion was HingeJoint hinge = GetComponent<HingeJoint>(); on the Unity documentation regarding Component.GetComponent, which a more experienced developer explained to me should be HingeJoint hinge = gameObject.GetComponent<HingeJoint>();, which helped me understand how that worked. But, now that I should have it setup correctly, it still does not work. 
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by StillUnderlevel · Feb 11, 2018 at 12:33 PM
Figured it out, here's what I had:
 public class Leg_movement : MonoBehaviour
 {
     public GameObject foot, lowerLeg, upperLeg;
     JointSpring footSpring, lowerLegSpring, upperLegSpring;
     void Start()
     {
         HingeJoint footHinge = foot.GetComponent<HingeJoint>();
         footSpring = footHinge.spring;
         HingeJoint lowerLegHinge = lowerLeg.GetComponent<HingeJoint>();
         lowerLegSpring = lowerLegHinge.spring;
         HingeJoint upperLegHinge = upperLeg.GetComponent<HingeJoint>();
         upperLegSpring = upperLegHinge.spring;
     }
     void Update()
     {
         if (Input.GetKey(Keybinds.kcLeftLeg))
         {
             Debug.Log("Left leg contracts");
             lowerLegSpring.targetPosition = 100;
         }
         if (Input.GetKey(Keybinds.kcRightLeg))
         {
             Debug.Log("Right leg contracts");
         }
     }
 }
 
               And here's what I should have had:
 public class Leg_movement : MonoBehaviour
 {
     public GameObject foot, lowerLeg, upperLeg;
     JointSpring footSpring, lowerLegSpring, upperLegSpring;
     HingeJoint footHinge, lowerLegHinge, upperLegHinge;
     void Start()
     {
         footHinge = foot.GetComponent<HingeJoint>();
         footSpring = footHinge.spring;
         lowerLegHinge = lowerLeg.GetComponent<HingeJoint>();
         lowerLegSpring = lowerLegHinge.spring;
         upperLegHinge = upperLeg.GetComponent<HingeJoint>();
         upperLegSpring = upperLegHinge.spring;
     }
     void Update()
     {
         if (Input.GetKey(Keybinds.kcLeftLeg))
         {
             Debug.Log("Left leg contracts");
             lowerLegSpring.targetPosition = 100;
             lowerLegHinge.spring = lowerLegSpring;
         }
         if (Input.GetKey(Keybinds.kcRightLeg))
         {
             Debug.Log("Right leg contracts");
         }
     }
 }
 
               Works flawlessly now.