Question by
unity_1K2C_aJeJCN4YA · Mar 01, 2021 at 12:20 PM ·
rope
Need help with my rope mechanic
Hello, i am a noob in unity. I am trying to make a rope game that has two types of "ropes" - one normal and the second one which holds you at one angle and you can lengthen and shorten it (like Static hook from Terraria). I copied my code from first rope and added ability to change its length but i dont know how to do that rope holds you and dont let you swing. Here's my code:
public LineRenderer line2;
public DistanceJoint2D joint2;
Vector3 targetPos;
RaycastHit2D hit;
public float distance = 10f;
public LayerMask mask;
void Start()
{
joint2 = GetComponent<DistanceJoint2D>();
joint2.enabled = false;
line2.enabled = false;
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.W))
{
joint2.distance -= 0.1f;
}
if (Input.GetKey(KeyCode.S) && (joint2.distance < 8f))
{
joint2.distance += 0.1f;
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
targetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
targetPos.z = 0;
hit = Physics2D.Raycast(transform.position, targetPos - transform.position, distance, mask);
if (hit.collider != null && hit.collider.gameObject.GetComponent<Rigidbody2D>() != null)
{
joint2.enabled = true;
Vector2 connectPoint = hit.point - new Vector2(hit.collider.transform.position.x, hit.collider.transform.position.y);
connectPoint.x = connectPoint.x / hit.collider.transform.localScale.x;
connectPoint.y = connectPoint.y / hit.collider.transform.localScale.y;
Debug.Log(connectPoint);
joint2.connectedAnchor = connectPoint;
joint2.connectedBody = hit.collider.gameObject.GetComponent<Rigidbody2D>();
joint2.distance = Vector2.Distance(transform.position, hit.point);
line2.enabled = true;
line2.SetPosition(0, transform.position);
line2.SetPosition(1, hit.point);
line2.GetComponent<roperatio>().grabPos = hit.point;
line2.SetPosition(1, joint2.connectedBody.transform.TransformPoint(joint2.connectedAnchor));
}
}
if (Input.GetKey(KeyCode.Q))
{
line2.SetPosition(0, transform.position);
}
if (Input.GetKeyUp(KeyCode.Q))
{
joint2.enabled = false;
line2.enabled = false;
}
}
Please help i am stuck with it for like 5-6 hours also sorry for my english i dont know it well
Comment
Your answer
Follow this Question
Related Questions
Rope Physics - Flying End 0 Answers
How to shoot spider man webs? 1 Answer
Unbreakable joint 2d 0 Answers
How to grip a character with a rope ? 0 Answers
Making Rope mesh to edit vertices. how? 0 Answers