Advertisement
Pointy-Pighead-Games

Geometry Dash Jumping (Full Script)

Sep 3rd, 2017
1,574
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.48 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Jump : MonoBehaviour {
  6.     private Rigidbody rb;
  7.     public float jumpForce;
  8.     private bool isGrounded = false;
  9.     private bool canJump = true;
  10.     public float rotateSpeed;
  11.     public float moveSpeed;
  12.     [Tooltip("Is the super jump power up active?")]
  13.     public bool superJump = false;
  14.     private GameObject hud;
  15.     [Tooltip("Can you jump?")]
  16.     public bool ableToJump = true;
  17.     [Tooltip("Are you using the jetpack?")]
  18.     public bool jetpackMode = false;
  19.     [Tooltip("Jetpack")]
  20.     public GameObject jetpack;
  21.     [Tooltip("Jetpack particles")]
  22.     public ParticleSystem fire;
  23.     [Tooltip("Jetpack particles")]
  24.     public ParticleSystem fire2;
  25.     private float startingPoint;
  26.     private float newPoint;
  27.     [Tooltip("The times the speed changes")]
  28.     public float[] times;
  29.     [Tooltip("The speed when the speed changes")]
  30.     public float[] speedForTimes;
  31.     private float totalTime = 0;
  32.     private float totalDistance = 0;
  33.     [Tooltip("Should music start based on position?")]
  34.     public bool isTesting;
  35.     [Tooltip("Use this to make sure you can't fly very high")]
  36.     public GameObject[] topGround;
  37.     public Animator jetpackAnim;
  38.     public GameObject jetpackTimer;
  39.     private Vector3 rayCenter;
  40.     public Animator finishMenu;
  41.     // Use this for initialization
  42.     void Start () {
  43.         if (isTesting == true) {
  44.  
  45.             foreach (float i in times)
  46.             {
  47.                
  48.                 totalTime += i;
  49.             }
  50.             for (int i = 0; i < times.Length; i ++) {
  51.                 float e = times[i] * speedForTimes[i];
  52.                 totalDistance += e;
  53.             }
  54.  
  55.             float r = transform.position.x - (times[times.Length - 1] * speedForTimes[speedForTimes.Length - 2]) ;
  56.             r /= speedForTimes[speedForTimes.Length - 1];
  57.             startingPoint = totalTime + r;
  58.             ChangePlayerSpeed[] speeds = GetComponents<ChangePlayerSpeed>();
  59.             foreach (ChangePlayerSpeed i in speeds)
  60.             {
  61.                 if (i.delayTime <= startingPoint) {
  62.                     Destroy(i);
  63.                 }
  64.  
  65.             }
  66.             ChangePlayerY[] cpy = GetComponents<ChangePlayerY>();
  67.             foreach (ChangePlayerY i in cpy)
  68.             {
  69.                 if (i.delayTime <= startingPoint)
  70.                 {
  71.                     Destroy(i);
  72.                 }
  73.  
  74.             }
  75.             //newPoint = transform.position.x;
  76.            
  77.             moveSpeed = speedForTimes[speedForTimes.Length - 1];
  78.             AudioSource music = GameObject.Find("Music").GetComponent<AudioSource>();
  79.             music.time = startingPoint;
  80.             music.Play();
  81.             foreach (GameObject e in topGround) {
  82.                 e.SetActive(false);
  83.             }
  84.         }
  85.         else {
  86.             moveSpeed = 5;
  87.             GameObject.Find("Music").GetComponent<AudioSource>().Play();
  88.             GameObject.Find("Music").GetComponent<AudioSource>().volume = PlayerPrefs.GetFloat("Volume");
  89.         }
  90.         rb = GetComponent<Rigidbody>();
  91.        
  92.            
  93.  
  94.         hud = GameObject.Find("HUD");
  95.  
  96.         //fire = jetpack.transform.GetChild(0).GetComponent<ParticleSystem>();
  97.         fire.Stop();
  98.         fire2.Stop();
  99.  
  100.     }
  101.    
  102.     // Update is called once per frame
  103.    
  104.     void Update() {
  105.         rayCenter = transform.position;
  106.         rayCenter.x = rayCenter.x + 0.3f;
  107.         if (Physics.Raycast(rayCenter, Vector3.down, 1 / 2 + 0.75f))
  108.         {
  109.             if (jetpackMode == false)
  110.             {
  111.                 Quaternion rot = transform.rotation;
  112.                 rot.z /= 90;
  113.                 rot.z = Mathf.Round(rot.z);
  114.                 rot.z *= 90;
  115.                 rot.x = 0;
  116.                 rot.y = 0;
  117.                 transform.rotation = rot;
  118.                 rb.angularVelocity = Vector3.zero;
  119.                 isGrounded = true;
  120.             }
  121.         }
  122.  
  123.         else
  124.         {
  125.            
  126.             isGrounded = false;
  127.         }
  128.         Debug.DrawRay(rayCenter, Vector3.down * (1 / 2 + 0.65f), Color.green);
  129.         if (Input.GetMouseButton(0) && canJump == true && isGrounded == true && ableToJump && jetpackMode == false)
  130.         {
  131.             Hop();
  132.         }
  133.         if (Input.GetKey(KeyCode.UpArrow) && ableToJump && jetpackMode == false && canJump == true && isGrounded == true)
  134.         {
  135.             Hop();
  136.         }
  137.         if (Input.GetKey(KeyCode.Space) && ableToJump && jetpackMode == false && canJump == true && isGrounded == true)
  138.         {
  139.             Hop();
  140.         }
  141.         if (Input.GetKey(KeyCode.Space) || Input.GetMouseButton(0) || Input.GetKey(KeyCode.UpArrow)) {
  142.             if (jetpackMode == true) {
  143.                 Fly();
  144.             }
  145.  
  146.         }
  147.         if (Input.GetKeyUp(KeyCode.Space) || Input.GetMouseButtonUp(0) || Input.GetKeyUp(KeyCode.UpArrow))
  148.         {
  149.             if (jetpackMode == true)
  150.             {
  151.                 StopFly();
  152.             }
  153.  
  154.         }
  155.         if (jetpack.activeSelf == false && jetpackMode == true)
  156.         {
  157.             jetpack.SetActive(true);
  158.         }
  159.        
  160.     }
  161.     void FixedUpdate()
  162.     {
  163.         Vector3 vel = rb.velocity;
  164.         vel.x = moveSpeed;
  165.  
  166.         rb.velocity = vel;
  167.         if (isGrounded == false && jetpackMode == false)
  168.         {
  169.  
  170.             transform.Rotate(Vector3.back, Time.fixedDeltaTime * rotateSpeed);
  171.  
  172.         }
  173.     }
  174.     void OnTriggerEnter(Collider coll) {
  175.         if (coll.gameObject.tag == "Spring") {
  176.             SuperJump();
  177.            
  178.         }
  179.         if (coll.gameObject.tag == "Flag") {
  180.             Finish();
  181.         }
  182.         if (coll.gameObject.tag == "Jetpack")
  183.         {
  184.             jetpackMode = true;
  185.             transform.eulerAngles = new Vector3(0, 0, -5);
  186.             rb.constraints = RigidbodyConstraints.FreezeRotation;
  187.             Destroy(coll.gameObject);
  188.             Camera.main.GetComponent<CameraFollow>().FollowY(false);
  189.             foreach (GameObject e in topGround) {
  190.                 e.SetActive(true);
  191.             }
  192.             rb.mass = rb.mass / 3;
  193.             Invoke("EndFly", 13f);
  194.             jetpackTimer.SetActive(true);
  195.             jetpackAnim.SetBool("JetPack", true);
  196.         }
  197.         if (coll.gameObject.tag == "DeathZone") {
  198.            
  199.         }
  200.     }
  201.     void Reset() {
  202.         canJump = true;
  203.     }
  204.     void Hop() {
  205.         if (superJump == true)
  206.         {
  207.            
  208.                
  209.                 Vector3 zero = rb.velocity;
  210.                 zero.y = 0;
  211.                 rb.velocity = zero;
  212.  
  213.                 rb.AddForce(Vector2.up * (jumpForce * 1.3f));
  214.                 canJump = false;
  215.                 Invoke("Reset", 0.2f);
  216.            
  217.            
  218.         }
  219.         if(superJump == false && canJump == true && isGrounded == true) {
  220.             Vector3 zero = rb.velocity;
  221.             zero.y = 0;
  222.             rb.velocity = zero;
  223.  
  224.             rb.AddForce(Vector2.up * jumpForce);
  225.             canJump = false;
  226.             Invoke("Reset", 0.1f);
  227.         }
  228.        
  229.     }
  230.     void SuperJump() {
  231.         Vector3 zero = rb.velocity;
  232.         zero.y = 0;
  233.         rb.velocity = zero;
  234.  
  235.         rb.AddForce(Vector2.up * (jumpForce * 1.5f));
  236.         canJump = false;
  237.         Invoke("Reset", 0.1f);
  238.     }
  239.     void StopSJ () {
  240.         superJump = false;
  241.     }
  242.     public void StartSJ () {
  243.         superJump = true;
  244.         hud.GetComponent<PowerUpManager>().SuperJump();
  245.         Invoke("StopSJ", 5);
  246.     }
  247.     void Finish () {
  248.         GetComponent<Death>().finished = true;
  249.         moveSpeed = 0;
  250.         rb.velocity = Vector3.zero;
  251.         finishMenu.SetBool("LevelComplete", true);
  252.     }
  253.     void Fly () {
  254.         if (fire.isStopped == true) {
  255.             fire.Play();
  256.             fire2.Play();
  257.         }
  258.         rb.useGravity = false;
  259.         Vector3 vel = rb.velocity;
  260.  
  261.         vel.x = moveSpeed;
  262.         vel.y = moveSpeed;
  263.         vel.z = 0;
  264.         rb.velocity = vel;
  265.  
  266.     }
  267.     void StopFly () {
  268.         fire.Stop();
  269.         fire2.Stop();
  270.         Vector3 stop = rb.velocity;
  271.         stop.y = 0;
  272.  
  273.         rb.velocity = stop;
  274.         rb.useGravity = true;
  275.  
  276.     }
  277.     void EndFly () {
  278.         jetpackMode = false;
  279.        
  280.         rb.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezePositionZ;
  281.         transform.position = new Vector3(transform.position.x, transform.position.y, 0);
  282.        
  283.         Camera.main.GetComponent<CameraFollow>().FollowY(true);
  284.         foreach (GameObject e in topGround)
  285.         {
  286.             e.SetActive(false);
  287.         }
  288.         rb.mass = rb.mass * 3;
  289.        
  290.         jetpackAnim.SetBool("JetPack", false);
  291.         jetpackTimer.SetActive(false);
  292.         jetpack.SetActive(false);
  293.         rb.useGravity = true;
  294.         rb.velocity = Vector3.zero;
  295.         rb.angularVelocity = Vector3.zero;
  296.  
  297.     }
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement