private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("RopeNode")) { if (other.transform.parent.GetComponent <Base>() == actualBase) { return; } if (waitingToCollide > 0) { return; } Node otherNode = other.GetComponent <Node>(); if (isHoldingNumber == 999) { isHoldingNumber = otherNode.number; } if (isHoldingNumber != otherNode.number) { return; } _soundEmmiter.GrapRopeSound(); zoomCameraOut = true; zoomCameraIn = false; _playerAnimations.ChangeToGrap(); doMortal = false; countMortal = 0; SetLerpTrue(other); _distanceJoint2D = other.transform.parent.GetComponent <DistanceJoint2D>(); _distanceJoint2D.connectedBody = GetComponent <Rigidbody2D>(); _distanceJoint2D.distance = (transform.position - _distanceJoint2D.transform.position).magnitude; _distanceJoint2D.connectedAnchor = Vector2.zero; //holdingRigidBody = other.GetComponent<Rigidbody2D>(); var baseBase = other.transform.parent.GetComponent <Base>(); if (isHoldingNumber < baseBase.nodesNumber - 1 && !unchained) { baseBase.nodes[isHoldingNumber + 1].GetComponent <HingeJoint2D>().enabled = false; unchained = true; } //Fixar o player de alguma outra forma, essa buga a corda; //newFixedJoint = other.gameObject.AddComponent<FixedJoint2D>(); //newFixedJoint.connectedBody = GetComponent<Rigidbody2D>(); actualBase = other.transform.parent.GetComponent <Base>(); if (isHoldingNumber != actualBase.nodesNumber - 1) { hinges = other.GetComponents <HingeJoint2D>(); var hingeTwo = hinges[1]; hingeTwo.connectedBody = thisRigidBody; } else { var newHinge = other.gameObject.AddComponent <HingeJoint2D>(); newHinge.autoConfigureConnectedAnchor = false; newHinge.connectedBody = thisRigidBody; newHinge.anchor += new Vector2(0, _ropeGenerator.nodeSize / 2); var limits = newHinge.limits; limits.max = -baseBase.nodes[isHoldingNumber - 1].GetComponent <HingeJoint2D>().limits.max; limits.min = -baseBase.nodes[isHoldingNumber - 1].GetComponent <HingeJoint2D>().limits.min; newHinge.limits = limits; newHinge.connectedAnchor = Vector2.zero; newHinge.enableCollision = true; holdingLastRope = true; } actualBase.nodesNumber = isHoldingNumber; for (int i = 0; i < actualBase.nodes.Count - 1; i++) { if (i > isHoldingNumber) { actualBase.nodes.Remove(actualBase.nodes[i]); Destroy(actualBase.nodes[i]); } } spawnedRopes = false; } }