Пример #1
0
    // Update is called once per frame
    void Update()
    {
        if (isOnElevator)
        {
            return;
        }

        if (GameManager.WinTrigerred)
        {
            return;
        }

        if (!isJumping && !Qbert_Dead)
        {
            //Debug.Log("KeyPress Active");
            KeyboardInputCheck();
            return;
        }

        if (tParamBezierParameter < 1.0)
        {
            this.tParamBezierParameter += BezierCurveFactor * Time.deltaTime;
            this.transform.position     = Vector3.Lerp(Vector3.Lerp(this.position0, this.position1, tParamBezierParameter),
                                                       Vector3.Lerp(this.position1, this.position2, tParamBezierParameter), tParamBezierParameter);
        }

        if (isJumping)
        {
            switch (SpriteSwitchCase)
            {
            case SpriteJumpDirection.JumpBottomLeft:
                spriteRenderer.sprite = JumpBottomLeft;
                break;

            case SpriteJumpDirection.JumpBottomRight:
                spriteRenderer.sprite = JumpBottomRight;
                break;

            case SpriteJumpDirection.JumpTopLeft:
                spriteRenderer.sprite = JumpTopLeft;
                break;

            case SpriteJumpDirection.JumpTopRight:
                spriteRenderer.sprite = JumpTopRight;
                break;

            default:
                spriteRenderer.sprite = BottomLeft;
                break;
            }
        }


        if (this.transform.position == this.position2)
        {
            if (BlockMovingTo != null)
            {
                BlockMovingTo.Activate();
                BlockMovingTo = null;
            }
            else if (ElevatorMovingTo != null)
            {
                ElevatorMovingTo.ActivateElevator = true;
                ElevatorMovingTo = null;
            }

            isJumping             = false;
            tParamBezierParameter = 0;
            if (SpriteSwitchCase == SpriteJumpDirection.JumpTopLeft)
            {
                spriteRenderer.sprite = TopLeft;
            }
            else if (SpriteSwitchCase == SpriteJumpDirection.JumpTopRight)
            {
                spriteRenderer.sprite = TopRight;
            }
            else if (SpriteSwitchCase == SpriteJumpDirection.JumpBottomLeft)
            {
                spriteRenderer.sprite = BottomLeft;
            }
            else if (SpriteSwitchCase == SpriteJumpDirection.JumpBottomRight)
            {
                spriteRenderer.sprite = BottomRight;
            }

            // If Qbert is dead, get the bezier curve movement to fall down, and reset
            if (Qbert_Dead && deathByFall)
            {
                //Debug.Log("In DeathbyFallQbert");
                float tempCurveFactor = BezierCurveFactor;
                MoveAlongBezierCurve(this.transform.position, deadPositionForBezierCurve);
                if (transform.position.y == deadzoneY)
                {
                    tParamBezierParameter = 1;
                    GameManager.ResetGame = true;
                }
            }
            else if (Qbert_Dead && deathByEnemy)
            {
                //Time.timeScale = 0;
                tParamBezierParameter = 1;
                Debug.Log("In DeathbyEnemyQbert (Update)");
                GameManager.ResetGame = true;
            }
        }

        //this.GetComponent<Rigidbody2D>().velocity = new Vector2(0, 0);
    }