#pragma strict
//Public Variables
var moveSpeed : float = 25; // Movement Speed
var jumpForce : float = 300; // Jump Force
var allowDoubleJump : boolean = true; // Allow Double Jump
//Private Variables
private var horizontalInput : float;
private var verticalInput : float;
private var isFacingRight : boolean = true;
public var isGrounded : boolean = false;
private var isMoving : boolean = false;
private var jumpCount = 0;
private var velX : float;
private var animator : Animator;
function Update () {
animator = GetComponent("Animator"); // Get the "Animator" component and set it to "animator" var
velX = rigidbody2D.velocity.x; // Store the x velocity in "vel" var
HandleInput(); // Handles Input
HandleMovement(); // Handles Movement
HandleJump();
SetIsGrounded(); // Sets "isGrounded"
SetIsFacingRight(); // Sets "isFacingRight"
SetIsMoving(); // Sets "isMoving"
}
function HandleInput() {
horizontalInput = Input.GetAxis("Horizontal"); // Set "horiztonalInput" equal to the Horizontal Axis Input
verticalInput = Input.GetAxis("Vertical"); // Set "verticallInput" equal to the Vertical Axis Inpu
}
function HandleMovement() {
rigidbody2D.velocity.x = horizontalInput * moveSpeed * Time.deltaTime; // Moves gameObject based on the "moveSpeed" var
}
function HandleJump() {
if(Input.GetButtonDown("Jump")) { // When "Jump" button is pressed
jumpCount++; // Add 1 to jumpCount
if(isGrounded || (allowDoubleJump && jumpCount < 2)) { // if the character is on the ground OR if double jump is allow and the "jumpCount" is below 2
rigidbody2D.velocity.y = 0; // Set the y velocity to 0
rigidbody2D.AddForce(Vector2.up * jumpForce * Time.deltaTime); // Add y force set by "jumpForce"
}
}
}
function Flip() {
isFacingRight = !isFacingRight; // Toggles between "true" and "false"
gameObject.transform.localScale.x *= -1; // Flip the gameObject based on localScale
}
function SetIsFacingRight() {
if(velX > 0 && !isFacingRight) { // If velocity is positive and gameObject isn't facing right
Flip();
} else if(velX < 0 && isFacingRight) { // If velocity is negative and gameObject is facing right
Flip();
}
}
function SetIsMoving() {
if(velX != 0) { // If velocity isn't 0, set "isMoving" to true
isMoving = true;
} else { // If velocity is 0, set "isMoving" to false
isMoving = false;
}
animator.SetBool("isMoving", isMoving); // Set the "isMoving" bool parameter to equal "isMoving" var
}
function SetIsGrounded() {
var raycastHit : RaycastHit2D = Physics2D.Raycast(transform.position, -Vector2.up, 0.6); // Create a ray from the character to check for the ground
if(raycastHit.collider != null) { // If the ray hit isn't null
if(raycastHit.collider.tag == "ground") { // Check if the collider is in the "ground" tag
isGrounded = true; // Set "isGrounded" to true
jumpCount = 0; // Reset the "jumpCount" to 0
}
} else {
isGrounded = false; // Set "isGrounded" to false if not colliding with "ground" tag
}
}