I have these “detectors” objects on my character that check collisions and then move the collided object to “holders” to become “attachments” of the character. Once this happen I need more to spawn more detectors and holders for the character to grow further. However as you can see from the script, as the the “detector” and the “attachCheck” begins collision they never cease to as the object is moved on a position of constant collision.
Instead I would only like to instanciate a new “attacher” (detectors+holders) once, when the collision first happens.
private void DL_Attach()
{
RaycastHit2D attachCheck = Physics2D.Raycast(DL_Detector.position, Vector2.one * transform.localScale, -0);
if (attachCheck.collider != null && attachCheck.collider.tag == "Molecule")
{
attachCheck.collider.gameObject.transform.parent = DL_Holder;
attachCheck.collider.gameObject.transform.position = DL_Holder.position;
AttachersInstantiation();
if (Input.GetKey(KeyCode.X))
{
attachCheck.collider.gameObject.transform.parent = null;
}
}
}
private void AttachersInstantiation()
{
Transform attacher = Instantiate(this.attachersPrefab);
attacher.position = Attachers[Attachers.Count - 1].position;
Attachers.Add(attacher);
}