示例#1
0
    void Update()
    {
        score += Mathf.Round(130 * Time.deltaTime);
        gameUI.SetScore(score);

        #region Shoot
        var fullAuto = gun.GetAuto() ? Input.GetKey(KeyCode.Space) : Input.GetKeyDown(KeyCode.Space);
        if (fullAuto && !isDashing && currentTbw <= 0)
        {
            gun.Shoot();
            currentTbw = gun.GetTimeBtw();
        }
        else
        {
            currentTbw -= Time.deltaTime;
        }
        #endregion

        #region Turns
        if (Input.GetKeyDown(KeyCode.RightArrow) && !arrowR)
        {
            arrowR    = true;
            interTurn = 0;
        }
        else if (Input.GetKeyDown(KeyCode.LeftArrow) && arrowR)
        {
            arrowR    = false;
            interTurn = 0;
        }

        float dir      = arrowR ? 45 : -45;
        float currTurn = transform.rotation.y;
        transform.rotation = Quaternion.Euler(0, Mathf.Lerp(currTurn, dir, interTurn), 0);
        interTurn         += Time.deltaTime * turnSpeed;
        controller.Move(transform.forward * currSpeed * Time.deltaTime);
        #endregion

        #region Clamping
        if (transform.position.x > 17)
        {
            transform.position = new Vector3(17, transform.position.y, transform.position.z);
        }
        else if (transform.position.x < -17)
        {
            transform.position = new Vector3(-17, transform.position.y, transform.position.z);
        }
        #endregion

        #region Dashing
        isDashing = Input.GetKey(KeyCode.LeftShift) && gameUI.GetEnergy() > 0;

        if (isDashing)
        {
            currSpeed          = dashSpeed;
            transform.position = new Vector3(transform.position.x, -10, transform.position.z);
            gameUI.AccumulateEnergy(-Time.deltaTime);
        }
        else
        {
            currSpeed          = speed;
            transform.position = new Vector3(transform.position.x, 0, transform.position.z);
        }
        volume.transform.localPosition = Vector3.MoveTowards(
            volume.transform.localPosition,
            isDashing ? post : noPost,
            Time.deltaTime * 5);
        #endregion
    }