Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class ShootGrap : MonoBehaviour{
- Rigidbody rigid;
- GameObject Player;
- LineRenderer line;
- [HideInInspector]public bool Grappled = false;
- bool Returning = false;
- bool ClassicMovement=false;
- Vector3 MousePos;
- SpringJoint Spring;
- public Color col;
- void Start(){
- rigid = GetComponent<Rigidbody> ();
- Player = GameObject.FindWithTag ("Player");
- line = gameObject.AddComponent<LineRenderer> ();
- //Spring = Player.gameObject.AddComponent<SpringJoint> ();
- line.SetWidth (.10f,.10f);
- line.SetVertexCount (2);
- line.material.color = col;
- if(col==null){ line.material.color = Color.gray; } //Does this make sense? Null=Black in Inspector
- line.GetComponent<Renderer> ().enabled = true;
- }
- void Update(){
- MousePos = new Vector3 (Input.mousePosition.x - Screen.width / 2, Input.mousePosition.y-Screen.height/2, Input.mousePosition.z - Screen.width / 2);
- line.SetPosition (0,transform.position);
- line.SetPosition (1, Player.transform.position);
- print (Vector3.Distance (transform.position, Player.transform.position)+" :: "+transform.forward+" :: ");
- if(!Grappled){
- //Move
- Move ();
- }
- if(ClassicMovement==true){
- //FakeSwing ();
- }
- }
- void OnCollisionEnter(Collision other){
- OnCollisionStay (other);
- }
- void OnCollisionStay(Collision other){
- Grappled = true;
- print ("Collided with::" + other.gameObject.name + " at " + transform.position);
- rigid.isKinematic = true;
- //Classic Movement
- ///* Disable
- Player.GetComponent<Rigidbody> ().useGravity = false;
- Player.transform.position = Vector3.Lerp (Player.transform.position, transform.position + transform.up * -2, Time.deltaTime * 2);
- //StartCoroutine (GetReadyToSwing ());
- //*/
- //SpringMovement
- //StartCoroutine (SpringMove ());
- }
- void Move(){
- if(!Returning){
- transform.position = Vector3.Lerp (transform.position, new Vector3 (0, MousePos.y, MousePos.x), Time.deltaTime/2);
- //if(transform.position.z>Player.transform.position.z){ transform.forward = Vector3.forward * 1; }
- //if(transform.position.z<Player.transform.position.z){ transform.forward = Vector3.forward *-1; }
- }else{
- transform.position = Vector3.Lerp (transform.position, Player.transform.position, Time.deltaTime * 8);
- if(Vector3.Distance (transform.position,Player.transform.position)<1){
- //Destroy (Player.GetComponent<SpringJoint>());
- Destroy (gameObject);
- }
- }
- if(Vector3.Distance (transform.position,Player.transform.position)>50){
- print ("Returning...");
- if(Returning==false){Returning = true;}
- }
- }
- IEnumerator SpringMove(){
- yield return new WaitForSeconds (.5f);
- if (Player.GetComponent<SpringJoint> () == null) {
- Spring = Player.AddComponent<SpringJoint> ();
- Spring.anchor = transform.position;
- Spring.maxDistance = 0.05f;
- Spring.minDistance = 0.05f;
- }
- }
- IEnumerator GetReadyToSwing(){
- yield return new WaitForSeconds (2);
- if(Vector3.Distance (Player.transform.position,transform.position)<3)
- ClassicMovement = true;
- }
- IEnumerator FakeSwing(){
- yield return new WaitForSeconds (2.5f);
- if(Player.transform.position.z>transform.position.z){
- Player.transform.position = Vector3.Lerp (Player.transform.position, new Vector3 (0, 0, transform.position.z * 5), Time.deltaTime);
- }
- if(Player.transform.position.z<transform.position.z){
- Player.transform.position = Vector3.Lerp (Player.transform.position, new Vector3 (0, 0, transform.position.z * 5), Time.deltaTime);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement