Qu/Assets/Scripts/Grapple.cs
Gerard Gascón bd5b1556ff init
2025-04-24 14:23:29 +02:00

69 lines
2.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Grapple : MonoBehaviour{
public GameObject selector;
public float rotationSpeed;
Rigidbody2D rb2d;
GameObject player;
void Start(){
rb2d = GetComponent<Rigidbody2D>();
player = GameObject.FindGameObjectWithTag("Player");
selector.SetActive(false);
}
void Update(){
selector.transform.Rotate(0, 0, rotationSpeed);
}
void OnMouseOver(){
if (Vector2.Distance(player.transform.position, transform.position) <= 10){
selector.SetActive(true);
player.GetComponent<PlayerController>().ableToGrapple = true;
}else{
selector.SetActive(false);
}
}
bool grappled;
void OnMouseExit(){
if (!grappled){
selector.SetActive(false);
if (!player.GetComponent<PlayerController>().grappled){
player.GetComponent<PlayerController>().ableToGrapple = false;
}
}
}
void OnMouseDown(){
if(Vector2.Distance(player.transform.position, transform.position) <= 10){
grappled = true;
SpringJoint2D grapple = player.GetComponent<SpringJoint2D>();
player.GetComponent<PlayerController>().grappled = true;
player.GetComponent<CapsuleCollider2D>().isTrigger = true;
LineRenderer line = player.GetComponent<LineRenderer>();
line.SetPosition(1, transform.position);
line.enabled = true;
grapple.connectedBody = rb2d;
grapple.distance = Vector2.Distance(player.transform.position, transform.position) - 1f;
grapple.enabled = true;
}
}
void OnMouseUp(){
grappled = false;
SpringJoint2D grapple = player.GetComponent<SpringJoint2D>();
LineRenderer line = player.GetComponent<LineRenderer>();
player.GetComponent<PlayerController>().grappled = false;
player.GetComponent<CapsuleCollider2D>().isTrigger = false;
line.enabled = false;
grapple.enabled = false;
selector.SetActive(false);
player.GetComponent<PlayerController>().ableToGrapple = false;
}
}