Week 10 – Movement Code

This is the code that I came up with when I decided to recode.

//Movement Version 0.1

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour {

    public float _spd = 10f;
    // Speed for the movement. It will vary depending on status (e.g. run, walk/sneak);

    private float _ch;
    // A variable that also registers the speed, to replace it back, after it is changed when running or walking.

    private float _hz;
    // Used to register the horizontal movement

    private float _dt;
    // Used to register the inout movement (aka depth)

    private float _vt;
    // Used to register the movement on the vertical axis

    private bool _snk;
    // Used to register when the Sneak/Walk button is pressed

    private bool _rn;
    // Used to register when the Run button is pressed

    public Rigidbody _rb;
    // Used to get the rigidbody as a variable;

    private Quaternion _rFacing;
    // Used to change directon when facing  for right

    private Quaternion _lFacing;
    // Used to change direction when facing  for left

    private int _sw;

    // Used to manage the change of direction

    void Switch() {

  // The rotation is retaind and afterwards is switched for left facing
        _rFacing = transform.rotation;
        _lFacing = _rFacing * Quaternion.Euler (0f, 180f, 0);

        // The switching is defined in cases, replacing the rotation of the object
        switch (_sw) {

        case 0:
            transform.rotation = _rFacing;
            break;
        case 1:
            transform.rotation = _lFacing;
            break;

        }}

    // Use this for initialization
    void Start () {

        _rb = GetComponent <Rigidbody> ();
        // Asigning the Rigidbody to the variable
        
    }
    
    // Update is called once per frame
    void Update () {

        // Assigning the variable for change the same value as speed
        _ch = _spd;

        // Assign all the Axis and Buttons to the variables
        _hz = Input.GetAxis (Horizontal);
        _dt = Input.GetAxis (Depth);
        _vt = Input.GetAxis (Vertical);

        // Assign the conditions for the booleans used for the buttons
        if (Input.GetAxis (Sneak) > 0)
            _snk = true;
        else
            _snk = false;

        if (Input.GetAxis (Run) > 0)
            _rn = true;
        else
            _rn = false;

        // Now the change of speed takes place if the Run or Sneak/Walk button is pressed
        if (_snk == true)
            _spd = _spd / 2;
        else
            _spd = _ch;

        if (_rn == true)
            _spd = _spd * 2;
        else
            _spd = _ch;

        // We change direction depending on which button is pressed (left or right)

        if (_hz > 0) {
            _sw = 0;
            Switch (_sw);
        }

        if (_hz < 0) {
            _sw = 1;
            Switch (_sw);
        }

        // The movement takes place, depending on the buttons pressed
                transform.Translate (new Vector3 (0, 0, _dt) * _spd * Time.deltaTime);
                transform.Translate (new Vector3 (_hz, 0, 0) * _spd * Time.deltaTime);

    }
}

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