Advertisement
Guest User

Playermove.js

a guest
Dec 6th, 2013
1,772
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #pragma strict
  2. var moveSpeed : float = 8;
  3. var jumpSpeed : float = 25;
  4. var fallSpeed : float = 64;
  5. var maxFallSpeed : float = 60;
  6. var maxUpSpeed : float = 25;
  7. var slopeLimit : float = 45;
  8. var dashSpeed : float = 120;
  9. var fly : boolean;
  10.  
  11. private var vm : float;
  12. var onGround : boolean;
  13. private var xScale : float;
  14. private var h : float;
  15. private var v : float;
  16. private var jump : boolean;
  17. private var anim : Animator;
  18. private var circCollider : CircleCollider2D; //If boxCollider2D is used replace w/ ... private var boxColl : BoxCollider2D;
  19.  
  20. function Start () {
  21.     xScale = transform.localScale.x; //Get correct starting Orientation for player.
  22.     anim = gameObject.GetComponent("Animator"); //Get Animations for character
  23.     circCollider = GetComponent(CircleCollider2D); //if boxCollider2D is used replace w/... boxColl = GetComponent(BoxCollider2D);
  24. }
  25.  
  26. function Update () {
  27.     h = Input.GetAxisRaw("Horizontal"); //get horizontal input
  28.     v = Input.GetAxisRaw("Vertical"); //get vertical input
  29.     jump = Input.GetKey(KeyCode.Space); //get jump input
  30. }
  31.  
  32. function FixedUpdate(){
  33.     if(onGround && jump){ //Are we grounded can we jump?
  34.         vm = jumpSpeed;
  35.     }
  36.    
  37.     var moveH : float = h * moveSpeed * Time.deltaTime; //Smooth horizontal movement
  38.     //Flip character orientation
  39.     if(h < 0){
  40.         transform.localScale.x = -xScale;
  41.     } else if(h > 0){
  42.         transform.localScale.x = xScale;
  43.     }
  44.    
  45.     anim.SetFloat("VM", vm); //Animate VM parameter
  46.     anim.SetBool("Grounded", onGround); //Animate Grounded parameter
  47.     rigidbody2D.AddForce(Vector2.right * moveH); //Apply horizontal movement
  48.     rigidbody2D.AddForce(Vector2.up * vm); //Apply vertical movement
  49.    
  50.     if(fly){ //Can we fly?
  51.         if(v > 0){
  52.             //Fly like a bird!!!
  53.             vm += v * Time.deltaTime * 20;
  54.         } else {
  55.             //Uh oh it's gravity
  56.             vm -= fallSpeed * Time.deltaTime;
  57.         }
  58.     } else {
  59.         //Gravity ... ouch!
  60.         vm -= fallSpeed * Time.deltaTime;
  61.     }
  62.    
  63.     vm = Mathf.Clamp(vm, -maxFallSpeed, maxUpSpeed); //Clamp vertical speeds
  64.     rigidbody2D.velocity = Vector2.zero; //Stop movement if there is no input
  65.     onGround = false; //Clear out grounding check
  66. }
  67.  
  68. function OnCollisionEnter2D(c : Collision2D){
  69.     CheckCollision(c);
  70. }
  71.  
  72. function OnCollisionStay2D(c : Collision2D){
  73.     CheckCollision(c);
  74. }
  75.  
  76. function CheckCollision(c : Collision2D){
  77.     for(var contact in c.contacts){
  78.         //Check for floor hit
  79.         //If boxCollider2D is used replace circCollider.radius w/ (boxCollider2D.size.y/2)
  80.         if(vm <= 0 && contact.point.y <= transform.position.y - circCollider.radius && Vector2.Angle(Vector2.up, contact.normal) <= slopeLimit){
  81.             onGround = true;
  82.             vm = Mathf.Max(0, vm);
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement