private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Player")
        {
            direction = other.gameObject.GetComponent <PlayerMovement>().forward;
            Debug.Log("In!");
            //if (other.gameObject.GetComponent<PlayerMovement>().gate == number && targetMain.setGo)
            //{
            //    targetMain.rotMult = -targetMain.rotMult;
            //}
            //else
            //{
            //    targetMain.setGo = true;
            //}
            if (direction)
            {
                other.gameObject.GetComponent <PlayerMovement>().prevNode = gameObject;
                other.gameObject.GetComponent <PlayerMovement>().nextNode = next;
                targetMain.rotMult = -1;
            }
            else
            {
                other.gameObject.GetComponent <PlayerMovement>().prevNode = prev;
                other.gameObject.GetComponent <PlayerMovement>().nextNode = gameObject;
                targetMain.rotMult = 1;
            }

            other.gameObject.GetComponent <PlayerMovement>().gate = number;
            other.transform.rotation = other.transform.rotation * Quaternion.Euler(0, 30 * targetMain.rotMult, 0);
        }

        else if (other.gameObject.tag == "Enemy" && other.gameObject.GetComponent <WaypointRead>() == null)
        {
            Debug.Log("Got Enemy!");
            if (other.gameObject.GetComponent <EnemyController>().forward)
            {
                other.gameObject.GetComponent <EnemyController>().prevNode = gameObject;
                other.gameObject.GetComponent <EnemyController>().nextNode = next;
                other.gameObject.GetComponent <EnemyController>().rotMult  = 1;
                other.gameObject.GetComponent <EnemyController>().updateTargets();
            }
            else
            {
                other.gameObject.GetComponent <EnemyController>().prevNode = prev;
                other.gameObject.GetComponent <EnemyController>().nextNode = gameObject;
                other.gameObject.GetComponent <EnemyController>().rotMult  = -1;
                other.gameObject.GetComponent <EnemyController>().updateTargets();
            }
            other.transform.rotation = other.transform.rotation * Quaternion.Euler(0, 30 * targetMain.rotMult, 0);
        }
        else
        {
            WaypointRead node = other.gameObject.GetComponent <WaypointRead>();

            if (node != null && node.forward)
            {
                other.gameObject.GetComponent <WaypointRead>().prevNode = gameObject;
                other.gameObject.GetComponent <WaypointRead>().nextNode = next;
            }
            else if (node != null)
            {
                other.gameObject.GetComponent <WaypointRead>().prevNode = prev;
                other.gameObject.GetComponent <WaypointRead>().nextNode = gameObject;
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        swing.SetBool("swing", false);


        if (!firstSet && scale.value != 0)
        {
            firstSet = true;
        }

        if (health.isDead)
        {
            motion.SetBool("DEAD", true);
            rb.useGravity = true;
            weapon.AddComponent <Rigidbody>();
            Rigidbody t = weapon.GetComponent <Rigidbody>();
            t.isKinematic = false;
            t.useGravity  = true;
            t.mass        = 1;

            Destroy(this);
        }

        OnGround      = Physics.Raycast(transform.position, Vector3.down, detectLength, groundLayer);
        moveDirection = transform.position;

        //Run when hold left shift
        if (Input.GetKey(KeyCode.LeftShift))
        {
            speed = 10f;
            motion.SetInteger("speed", 10);
        }
        else
        {
            speed = 5f;
            motion.SetInteger("speed", 5);
        }

        reload = moveDirection.y;

        //Moving left and right
        if (Input.GetKey(KeyCode.A))
        {
            forward = false;
            anim.SetBool("Forward", forward);
            target        = prevNode.transform.position;
            target.y      = transform.position.y;
            moveDirection = Vector3.MoveTowards(moveDirection, target, speed * Time.deltaTime);

            //Walking sounds
            if (OnGround && !walking)
            {
                StartCoroutine(sound);
                walking = true;
            }
            else if (!OnGround)
            {
                StopCoroutine(sound);
                walking = false;
            }

            if (speed == 10 && OnGround)
            {
                run.enableEmission = true;
            }
            else
            {
                run.enableEmission = false;
            }
        }
        else if (Input.GetKey(KeyCode.D))
        {
            forward = true;
            anim.SetBool("Forward", forward);
            target        = nextNode.transform.position;
            target.y      = transform.position.y;
            moveDirection = Vector3.MoveTowards(moveDirection, target, speed * Time.deltaTime);

            //Walking sounds
            if (OnGround && !walking)
            {
                StartCoroutine(sound);
                walking = true;
            }
            else if (!OnGround)
            {
                StopCoroutine(sound);
                walking = false;
            }

            if (speed == 10 && OnGround)
            {
                run.enableEmission = true;
            }
            else
            {
                run.enableEmission = false;
            }
        }
        //else if (Input.GetKey(KeyCode.L))
        //{
        //    rb.AddForce(body.transform.forward * 25, ForceMode.Force);
        //}
        else
        {
            motion.SetInteger("speed", 0);
            //Walking sounds
            StopCoroutine(sound);
            walking = false;
        }

        if (doMove)
        {
            //Update position
            moveDirection.y = reload;
            //transform.position = moveDirection;
            rb.MovePosition(moveDirection);
        }

        //On Ground, Jump, and Gravity
        if (OnGround)
        {
            canJump = true;
            shell.SetBool("grounded", true);
            shell.SetBool("canJump", true);

            rb.useGravity = false;

            if (Input.GetButtonDown("Jump"))
            {
                Jump();
                shell.SetBool("grounded", false);
            }
        }
        else
        {
            if (Input.GetButtonDown("Jump") && canJump)
            {
                canJump = false;
                shell.SetBool("canJump", false);
                Jump();
            }
            Vector3 phys = gravity * fallMult * Vector3.down;
            rb.AddForce(phys, ForceMode.Acceleration);
        }

        //Bullet Functions
        if (Input.GetButtonDown("Fire1") && firstSet && down == 0)
        {
            down = 1;
            Rigidbody instantiatedProjectile = Instantiate(Projectile, new Vector3(spawn.transform.position.x, spawn.transform.position.y, spawn.transform.position.z), transform.rotation) as Rigidbody;
            Physics.IgnoreCollision(instantiatedProjectile.GetComponent <Collider>(), GetComponent <Collider>());

            if (scale.value > 0)
            {
                instantiatedProjectile.GetComponent <Light>().color = new Color(1f, 0.8053272f, 0.3915094f);
                instantiatedProjectile.transform.GetChild(1).GetComponent <ParticleSystem>().startColor = new Color(1f, 0.8053272f, 0.3915094f);
            }
            else if (scale.value < 0)
            {
                instantiatedProjectile.GetComponent <Light>().color = new Color(0.7013627f, 0.2923638f, 0.8490566f);
                instantiatedProjectile.transform.GetChild(1).GetComponent <ParticleSystem>().startColor = new Color(0.7013627f, 0.2923638f, 0.8490566f);
            }

            //if(forward)
            //instantiatedProjectile.velocity = transform.TransformDirection(new Vector3(0, 0, 100f));
            //else
            //    instantiatedProjectile.velocity = transform.TransformDirection(new Vector3(0, 0, -100f));

            WaypointRead read = instantiatedProjectile.gameObject.GetComponent <WaypointRead>();
            read.forward  = forward;
            read.nextNode = nextNode;
            read.prevNode = prevNode;
        }

        if (Input.GetButtonDown("Fire2"))
        {
            swing.SetBool("swing", true);
        }
    }