Example #1
0
    static public PlayerStateChangeEntity getInstance()
    {
        if (s_instance == null)
        {
            s_instance = new PlayerStateChangeEntity();
            s_instance.init();
        }

        return(s_instance);
    }
Example #2
0
    public bool hurt(float damage)
    {
        if (isDie)
        {
            return(false);
        }

        curBlood -= damage;
        if (curBlood <= 0)
        {
            curBlood = 0;
            die();
        }

        setBloodProgres();

        if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.hurt))
        {
            setState(Consts.PlayerState.hurt);
        }

        return(true);
    }
Example #3
0
    void inputCallBack(InputControl.KeyBoard key)
    {
        switch (key)
        {
        // 跳跃、进入爬梯子状态
        case InputControl.KeyBoard.Down_W:
        {
            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.climb))
            {
                Transform ladder = RoadScript.s_instance.checkLadder(transform.localPosition);
                if (ladder)
                {
                    if (playerState == Consts.PlayerState.idle)
                    {
                        if ((ladder.position.y + 50) > transform.position.y)
                        {
                            // transform.position = new Vector3(ladder.position.x, transform.position.y, 0);
                            setState(Consts.PlayerState.climb);
                            break;
                        }
                    }
                }
            }

            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.jump))
            {
                if (playerState == Consts.PlayerState.crouch)
                {
                    setState(Consts.PlayerState.idle);
                }
                else
                {
                    if (curJumpCount < jumpComboCount)
                    {
                        setState(Consts.PlayerState.jump);
                    }
                }
            }

            break;
        }

        // 向上爬梯子
        case InputControl.KeyBoard.Keep_W:
        {
            if (playerState == Consts.PlayerState.climb)
            {
                changePlayerPos(0, climbSpeed);
                Transform ladder = RoadScript.s_instance.checkLadder(transform.localPosition);
                if (!ladder)
                {
                    setState(Consts.PlayerState.idle);
                }
            }

            break;
        }

        // 暂停向上爬梯子
        case InputControl.KeyBoard.Up_W:
        {
            if (playerState == Consts.PlayerState.climb)
            {
                FrameAnimationUtil.getInstance().stopAnimation(self_img);
            }
            break;
        }

        // 左右移动
        case InputControl.KeyBoard.Keep_A:
        case InputControl.KeyBoard.Keep_D:
        {
            Consts.MoveDirection direction    = key == InputControl.KeyBoard.Keep_A ? Consts.MoveDirection.left : Consts.MoveDirection.right;
            Consts.PlayerState   _playerState = key == InputControl.KeyBoard.Keep_A ? Consts.PlayerState.run_left : Consts.PlayerState.run_right;

            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, _playerState))
            {
                if (playerState == Consts.PlayerState.jump)
                {
                    setMoveDirection(direction);
                    move(false);
                }
                else if (playerState == Consts.PlayerState.drop)
                {
                    setMoveDirection(direction);
                    move(false);
                }
                else if (playerState == Consts.PlayerState.crouch)
                {
                    setMoveDirection(direction);
                    //move(false);
                }
                else
                {
                    setState(_playerState);
                }
            }

            break;
        }

        // 停止左右移动
        case InputControl.KeyBoard.Up_A:
        case InputControl.KeyBoard.Up_D:
        {
            Consts.PlayerState _playerState = key == InputControl.KeyBoard.Up_A ? Consts.PlayerState.run_left : Consts.PlayerState.run_right;

            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.idle))
            {
                if (playerState == _playerState)
                {
                    setState(Consts.PlayerState.idle);
                }
            }

            break;
        }

        // 蹲下、进入爬梯子状态
        case InputControl.KeyBoard.Down_S:
        {
            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.climb))
            {
                Transform ladder = RoadScript.s_instance.checkLadder(transform.localPosition);
                if (ladder)
                {
                    if (playerState == Consts.PlayerState.idle)
                    {
                        if ((ladder.position.y + 50) < transform.position.y)
                        {
                            // transform.position = new Vector3(ladder.position.x, transform.position.y, 0);
                            setState(Consts.PlayerState.climb);
                            break;
                        }
                    }
                }
            }

            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.crouch))
            {
                setState(Consts.PlayerState.crouch);
            }

            break;
        }

        // 往下爬梯子
        case InputControl.KeyBoard.Keep_S:
        {
            if (playerState == Consts.PlayerState.climb)
            {
                changePlayerPos(0, -climbSpeed);
                Transform ladder = RoadScript.s_instance.checkLadder(transform.localPosition);
                if (!ladder)
                {
                    setState(Consts.PlayerState.idle);
                }
            }
            break;
        }

        // 暂停向下爬梯子
        case InputControl.KeyBoard.Up_S:
        {
            if (playerState == Consts.PlayerState.climb)
            {
                FrameAnimationUtil.getInstance().stopAnimation(self_img);
            }
            break;
        }

        // 闪现
        case InputControl.KeyBoard.Down_N:
        {
            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.sprint))
            {
                setState(Consts.PlayerState.sprint);
            }

            break;
        }

        // 射击
        case InputControl.KeyBoard.Down_M:
        {
            if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, Consts.PlayerState.shoot))
            {
                switch (playerState)
                {
                case Consts.PlayerState.jump:
                case Consts.PlayerState.drop:
                case Consts.PlayerState.crouch:
                {
                    BulletScript.Create(transform.parent, moveDirection);
                    break;
                }

                default:
                {
                    setState(Consts.PlayerState.shoot);
                    break;
                }
                }
            }

            break;
        }
        }
    }
Example #4
0
    void inputCallBack(Consts.PlayerState _playerState)
    {
        if (PlayerStateChangeEntity.getInstance().checkIsCanChange(playerState, _playerState))
        {
            switch (_playerState)
            {
            // 静止
            case Consts.PlayerState.idle:
            {
                setState(Consts.PlayerState.idle);
                break;
            }

            // 跳跃
            case Consts.PlayerState.jump:
            {
                if (playerState == Consts.PlayerState.crouch)
                {
                    setState(Consts.PlayerState.idle);
                }
                else
                {
                    setState(Consts.PlayerState.jump);
                }
                break;
            }

            // 左移、右移
            case Consts.PlayerState.run_left:
            case Consts.PlayerState.run_right:
            {
                Consts.MoveDirection direction = _playerState == Consts.PlayerState.run_left ? Consts.MoveDirection.left : Consts.MoveDirection.right;
                if (playerState == Consts.PlayerState.jump)
                {
                    setMoveDirection(direction);
                    move(false);
                }
                else if (playerState == Consts.PlayerState.drop)
                {
                    setMoveDirection(direction);
                    move(false);
                }
                else if (playerState == Consts.PlayerState.crouch)
                {
                    // setMoveDirection(direction);

                    // 蹲下时只移动方向,不进行位移
                    // move(false);

                    setState(_playerState);
                }
                else
                {
                    setState(_playerState);
                }
                break;
            }

            // 蹲下
            case Consts.PlayerState.crouch:
            {
                setState(Consts.PlayerState.crouch);
                break;
            }

            // 开枪
            case Consts.PlayerState.shoot:
            {
                switch (playerState)
                {
                case Consts.PlayerState.jump:
                case Consts.PlayerState.drop:
                case Consts.PlayerState.crouch:
                {
                    BulletScript.Create(transform.parent, moveDirection);
                    break;
                }

                default:
                {
                    setState(Consts.PlayerState.shoot);
                    break;
                }
                }

                break;
            }

            // 闪现
            case Consts.PlayerState.sprint:
            {
                setState(Consts.PlayerState.sprint);
                break;
            }

            // 降落
            case Consts.PlayerState.drop:
            {
                setState(Consts.PlayerState.drop);
                break;
            }

            // 停止左移
            case Consts.PlayerState.stop_run_left:
            {
                if (playerState == Consts.PlayerState.run_left)
                {
                    setState(Consts.PlayerState.idle);
                }
                break;
            }

            // 停止右移
            case Consts.PlayerState.stop_run_right:
            {
                if (playerState == Consts.PlayerState.run_right)
                {
                    setState(Consts.PlayerState.idle);
                }
                break;
            }
            }
        }
    }