Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.18 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class pushPlayer : MonoBehaviour {
  5.    
  6.     public float gravity = 300.0F;      // HOW MUCH GRAVITY IS APPLIED?
  7.     public int _dirGravity = 0;         // WHICH WAY IS GRAVITY FACING?
  8.     public float speedRotation = 2F;    // HOW FAST CAN WE ROTATE THE CHARACTER?
  9.     public bool isGrounded = false;     // ARE WE ON A SURFACE?
  10.     public float jumpSpeed = 300.0F;    // HOW HIGH CAN WE JUMP?
  11.    
  12.     void FixedUpdate() {
  13.         // CHANGE THE GRAVITY DIRECTION WITH KEYS
  14.         if(Input.GetKeyDown(KeyCode.Q))
  15.             _dirGravity--;
  16.         if(Input.GetKeyDown(KeyCode.E))
  17.             _dirGravity++;
  18.         if(_dirGravity > 5)
  19.             _dirGravity = 0;
  20.         else if(_dirGravity < 0)
  21.             _dirGravity = 5;
  22.  
  23.        
  24.         // DIRECTION OF GRAVITY
  25.         switch(_dirGravity) {      
  26.             case 0:  // DOWN
  27.                 gravity = -500;
  28.                 Physics.gravity = new Vector3(0.0F,gravity * Time.deltaTime,0.0F);
  29.                 transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0.0F,0.0F,0.0F), Time.deltaTime * speedRotation);
  30.             break;
  31.             case 1:  // UP
  32.                 gravity = 500;
  33.                 Physics.gravity = new Vector3(0.0F,gravity * Time.deltaTime,0.0F);
  34.                 transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0.0F,0.0F,180.0F), Time.deltaTime * speedRotation);
  35.             break;
  36.             case 2:  // RIGHT
  37.                 gravity = -500;
  38.                 Physics.gravity = new Vector3(gravity * Time.deltaTime,0.0F,0.0F);
  39.                 transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0.0F,0.0F,270.0F), Time.deltaTime * speedRotation);
  40.             break;
  41.             case 3:  // LEFT
  42.                 gravity = 500;
  43.                 Physics.gravity = new Vector3(gravity * Time.deltaTime,0.0F,0.0F);
  44.             transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0.0F,0.0F,90.0F), Time.deltaTime * speedRotation);
  45.             break;
  46.             case 4:  // BACKWARD
  47.                 gravity = -500;
  48.                 Physics.gravity = new Vector3(0.0F,0.0F,gravity * Time.deltaTime);
  49.                 transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(90.0F,0.0F,0.0F), Time.deltaTime * speedRotation);
  50.             break;
  51.             case 5:  // FORWARD
  52.                 gravity = 500;
  53.                 Physics.gravity = new Vector3(0.0F,0.0F,gravity * Time.deltaTime);
  54.             transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(270.0F,0.0F,0.0F), Time.deltaTime * speedRotation);
  55.             break;
  56.         }
  57.        
  58.         // WHEN PLAYER NOT TOUCHING SURFACE
  59.         if (!isGrounded){          
  60.             Vector3 dwn = transform.TransformDirection(Vector3.down);
  61.             if (Physics.Raycast(transform.position, dwn, 0.5F)) {
  62.                 isGrounded = true;
  63.             }
  64.         }
  65.         // WHEN PLAYER is TOUCHING SURFACE
  66.         else {
  67.             if(Input.GetButtonDown("Jump")) {
  68.                
  69.                 // JUMP DEPENDING ON GRAVITY
  70.                 switch(_dirGravity) {
  71.                 case 0: // DOWN
  72.                     rigidbody.AddForce(Vector3.up * jumpSpeed);
  73.                     break;
  74.                 case 1: // UP
  75.                     rigidbody.AddForce(Vector3.down * jumpSpeed);
  76.                     break;
  77.                 case 2: // LEFT
  78.                     rigidbody.AddForce(Vector3.right * jumpSpeed);
  79.                     break;
  80.                 case 3: // RIGHT
  81.                     rigidbody.AddForce(Vector3.left * jumpSpeed);
  82.                     break;
  83.                 case 4: // BACKWARD
  84.                     rigidbody.AddForce(Vector3.forward * jumpSpeed);
  85.                     break;
  86.                 case 5: // FORWARD
  87.                     rigidbody.AddForce(Vector3.back * jumpSpeed);
  88.                     break;
  89.                 }
  90.                
  91.                 isGrounded = false;
  92.             }
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement