Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Grapple : MonoBehaviour
- {
- public GrapplingHook grapplingHook;
- [HideInInspector] public Rigidbody2D rb;
- [HideInInspector] public Collider2D collider;
- public GameObject attachedTo;
- private void Awake()
- {
- rb = GetComponent<Rigidbody2D>();
- collider = GetComponent<Collider2D>();
- }
- private void Update()
- {
- if (attachedTo && !attachedTo.activeSelf) grapplingHook.UnGrapple();
- }
- private void OnCollisionEnter2D(Collision2D collision)
- {
- if (grapplingHook.isGrappled) return;
- // Is the collision grappleable
- if (grapplingHook.whatIsGrappleAble == (grapplingHook.whatIsGrappleAble | (1 << collision.gameObject.layer)))
- {
- // Did we hit a physics object?
- Rigidbody2D collidingBody = collision.gameObject.GetComponent<Rigidbody2D>();
- if (collidingBody != null)
- {
- transform.SetParent(collidingBody.transform);
- rb.velocity = Vector2.zero;
- rb.isKinematic = true;
- collider.isTrigger = true;
- grapplingHook.joint.connectedBody = collidingBody;
- grapplingHook.Grappled();
- grapplingHook.joint.connectedAnchor = transform.localPosition;
- }
- else
- {
- rb.velocity = Vector2.zero;
- rb.isKinematic = true;
- collider.isTrigger = true;
- grapplingHook.joint.connectedBody = rb;
- grapplingHook.Grappled();
- grapplingHook.joint.connectedAnchor = Vector2.zero;
- }
- attachedTo = collision.gameObject;
- }
- else
- {
- // Hit non-grappleable layer, ungrapple
- grapplingHook.UnGrapple();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement