mirror of
https://github.com/Leahnaya/TheKingsRace.git
synced 2026-08-04 09:02:17 -05:00
Implemented Ragdoll kinda There are some issues with getting hit while ragdolling that need to be fixed Adjusted Dash Dash still needs some adjustments before being fully implemented
68 lines
1.8 KiB
C#
68 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class GrapplingHook : MonoBehaviour
|
|
{
|
|
public float maxGrappleDistance = 25;
|
|
|
|
private bool isGrappled;
|
|
private int hookPointIndex;
|
|
private GameObject hookPoint;
|
|
private GameObject[] hookPoints;
|
|
private float distance;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
isGrappled = false;
|
|
hookPoints = GameObject.FindGameObjectsWithTag("HookPoint");
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.E)) //If grapple button is hit
|
|
{
|
|
if (!isGrappled) //If we are not grappling
|
|
{
|
|
hookPointIndex = FindHookPoint(); //Find the nearest hook point within max distance
|
|
if (hookPointIndex != -1) //If there is a hookpoint
|
|
{
|
|
hookPoint = hookPoints[hookPointIndex]; //The point we are grappling from
|
|
//physics set up?
|
|
isGrappled = true; //toggle grappling state
|
|
}
|
|
}
|
|
else //Else we are grappling
|
|
{
|
|
//physics tear down?
|
|
isGrappled = false; //toggle grappling state to release
|
|
}
|
|
}
|
|
}
|
|
|
|
private void FixedUpdate()
|
|
{
|
|
if (isGrappled)
|
|
{
|
|
//Do grappling physics based on hookPoint
|
|
}
|
|
}
|
|
|
|
int FindHookPoint()
|
|
{
|
|
float least = maxGrappleDistance;
|
|
int index = -1;
|
|
for(int i = 0; i<hookPoints.Length; i++)
|
|
{
|
|
distance = Vector3.Distance(gameObject.transform.position, hookPoints[i].transform.position);
|
|
if (distance <= least)
|
|
{
|
|
index = i;
|
|
}
|
|
}
|
|
return index;
|
|
}
|
|
}
|