[Problem] Trying to create a rope for a grappling hook

Hello everyone

Sorry if this is not the good place but I never used this forum before.

I’m trying to create a grappling hook for a game. I Have a Hook, HookLauncher and Target. The Hook travel from the hookLauncher to the target by clicking on Mouse button Left and reverse without a problem.

But When I try to creat connected nodes during the hook’s movements, it never works. I tried different methods but none of them worked. There is a message telling that a joint can’t connect a body to itself.

Do you have any advises please?

Thank you for your help, The code inside my hook is here.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RopeScript : MonoBehaviour
{


    public Vector3 DestinationHook;


    public float HookSpeed = 1f;



    public GameObject NodePrefab;

    public GameObject lastNode;


    public bool HookOnDestination;


    public GameObject Target;

    public GameObject HookLauncher;



    public bool Fired;

    public bool NodeCreation;

    public bool done = false;


    public float Distance = 1f;

    public int NumberOfNode;



    // Use this for initialization
    void Start()
    {

        lastNode = HookLauncher.gameObject;

    }

    // Update is called once per frame
    void Update()
    {

        transform.position = Vector3.MoveTowards(transform.position, Target.transform.position, HookSpeed);


        if (NodeCreation == true)
        {

            if (Vector3.Distance(transform.position, lastNode.transform.position) > Distance)
            {

                CreateNode();

            }else if (done == false)
            {
                done = true;

                lastNode.GetComponent<HingeJoint>().connectedBody = HookLauncher.GetComponent<Rigidbody>();
            }

        }

    }


    public void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Target")
        {
            NodeCreation = false;
        }
    }

    public void CreateNode()
    {

        Vector3 pos2create = HookLauncher.transform.position - lastNode.transform.position;
        pos2create.Normalize();
        pos2create *= Distance;
        pos2create += (Vector3)lastNode.transform.position;

        GameObject go = (GameObject)Instantiate(NodePrefab, pos2create, Quaternion.identity);

        go.transform.SetParent(transform);

        lastNode.GetComponent<HingeJoint>().connectedBody = go.GetComponent<Rigidbody>();

        lastNode = go;

    }

}

Good day.

Did you tried LineRenderer Component ?

It allows you to draw a line in 3D, it will not move ( at least not by default).

You should investigate and explore if it can be usefull for your propouse!

The other way i can imagine is a little bit more complex and large to do. Have a prefab called “RopeSection”, and use them to create a rope by adding a new section at the end of the lastone, controlling its movements by scripts and child/parents configurations. Is more complex, but you can achieve anything by this way!

Good luck!