Week 11 – ReMovement Code

This is the code that I used when remaking the movement code, with the ideas from the previous scripts and some improvements upon them.

//ReMovement Version 0.1

using UnityEngine;
using System.Collections;

public class ReMovemement : MonoBehaviour {

    public float jumpSpeed = 300f;
    // Used for jumping
    public float normalSpeed = 10f;
    // Different speed used for walking transitions

    private float change;
    // Used to store the initial speed
    private int ch;
    // Used when switching the speeds of movement
    private float horizontalAxis;
    // Used to get the movement on the horizontal axis
    private bool jump;
    // Used to check if the player can jump or not

    private Rigidbody rigidBody;
    // Used to retain the Rigidbody, for jumping

    private Quaternion rightFacing;
    // Used for switching direction
    private Quaternion leftFacing;
    // Used for switching direction

    private bool canSneak;
    // Used to determine if the player can sneak or not
    private bool canRun;
    // Used to determine if the player can run or not
    private bool walk = true;
    // Used to make the player start in a walking position

    private int direction;
    // Used to change the direction the player is facing

    private bool canJump = true;
    // Used to determine if the player can jump or not

    // This method is used to determine how the jump happens, in this case through adding force to the Rigidbody on the y axis
    void Jump (){

        if (canJump == true) {
            rigidBody.AddForce (transform.up * jumpSpeed, ForceMode.Force);
            canJump = false;
        }
    }

    // This method is used to determine the condition for when the player can jump, in this case when the object has the tag Ground
    void OnCollisionEnter( Collision coll) {
        switch (coll.gameObject.tag) {
        case Ground:
            canJump = true;
            break;
        }
    }

    // Use this for initialization
    void Start () {

        rigidBody = GetComponent <Rigidbody> ();
        // Connect the Rigidbody to the specific variable

        rightFacing = transform.rotation;
        // Registering the rotation when the player is in the right direction
        leftFacing = rightFacing * Quaternion.Euler (0f, 180f, 0);
        // Switching the direction for when the player is facing the left direction

        direction = 0;
        // The standard direction the player is facing is case 0, facing right

        change = normalSpeed;
        // Assigning the initial speed to the change variable
    
    }
    
    // Update is called once per frame
    void Update () {

        horizontalAxis = Input.GetAxis (Horizontal);
        // Attaching the input of movement on the horizontal axis to the variable

        // Attaching the variables to their respective buttons
        jump = Input.GetButtonDown (Jump);
        canSneak = Input.GetButtonDown (Sneak);
        canRun = Input.GetButtonDown (Run);
        walk = Input.GetButtonDown (Walk);

        // Determining the value of the ch variable, depending on the button pressed, run, walk or sneak
        if (walk)
            ch = 0;

        if (canSneak)
            ch = 1;

        if (canRun)
            ch = 2;

        // The speed changes depending on the value of ch variable
        switch (ch) {
        case 0:
            normalSpeed = change;
            break;
        case 1:
            normalSpeed = change / 2f;
            break;
        case 2:
            normalSpeed = change * 2f;
            break;
        }
        
        // Determining which direction the player is facing, depending on the direction the button is pressed, left or right
        if (Mathf.Abs (horizontalAxis) > 0f)
            if (horizontalAxis < 0f)
                direction = 1;
            else
                direction = 0;

        // The direction the player is facing changes here
        switch (direction) {
        case 0:
            transform.rotation = rightFacing;
            break;
        case 1:
            transform.rotation = leftFacing;
            break;
        }

        // The player moves by using the horizontal axis, changing the transform of the x
        transform.Translate (new Vector3 (Mathf.Abs (horizontalAxis), 0, 0) * normalSpeed * Time.deltaTime);

        // The player jumps when they are pressing the button and depending on the variables of the above methods
        if (jump)
            Jump ();
    }
}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s