Пример #1
0
        private void OnPlayerStateChange(PlayerStateController.PlayerStates newPlayerState)
        {
            switch (newPlayerState)
            {
            case PlayerStateController.PlayerStates.Stomp:
                break;

            case PlayerStateController.PlayerStates.Running:
                break;
            }

            _currentPlayerState = newPlayerState;
        }
Пример #2
0
    private bool IsStateChangeAllowed(PlayerStateController.PlayerStates newState)
    {
        bool returnValue = false;

        switch (_currentPlayerState)
        {
        case PlayerStateController.PlayerStates.Idle:
            if (newState == PlayerStateController.PlayerStates.Running)
            {
                returnValue = true;
            }
            break;

        case PlayerStateController.PlayerStates.Running:
            returnValue = true;
            break;

        case PlayerStateController.PlayerStates.Dead:
            if (newState == PlayerStateController.PlayerStates.Idle)
            {
                returnValue = true;
            }
            break;

        case PlayerStateController.PlayerStates.Attack:
            if (newState == PlayerStateController.PlayerStates.Running ||
                newState == PlayerStateController.PlayerStates.Dead)
            {
                returnValue = true;
            }
            break;

        case PlayerStateController.PlayerStates.Stomp:
            if (newState == PlayerStateController.PlayerStates.Running ||
                newState == PlayerStateController.PlayerStates.Dead)
            {
                returnValue = true;
            }
            break;

        case PlayerStateController.PlayerStates.Teleport:
            if (newState == PlayerStateController.PlayerStates.Running ||
                newState == PlayerStateController.PlayerStates.Dead)
            {
                returnValue = true;
            }
            break;
        }

        return(returnValue);
    }
Пример #3
0
    private void OnPlayerStateChange(PlayerStateController.PlayerStates newState)
    {
        if (!IsStateChangeAllowed(newState))
        {
            return;
        }

        switch (newState)
        {
        case PlayerStateController.PlayerStates.Idle:
            break;

        case PlayerStateController.PlayerStates.Running:
            break;

        case PlayerStateController.PlayerStates.Dead:
            break;

        case PlayerStateController.PlayerStates.Attack:
            AttackDisabled(AttackCooldown);
            break;

        case PlayerStateController.PlayerStates.Stomp:
            RaycastHit2D hit = Physics2D.Raycast(RaycastPosition.transform.position, Vector2.right, 5);

            if (hit != null && hit.transform.tag == "Enemy")
            {
                Vector3 buttSmashPosition = hit.transform.position;
                buttSmashPosition.y += ButtSmashHeight;
                transform.position   = buttSmashPosition;
                StompDisabled(StompCooldown);
            }
            else
            {
                Debug.Log(hit.transform.tag);
            }
            break;

        case PlayerStateController.PlayerStates.Teleport:
            TeleportDisabled(TeleportCooldown);
            break;
        }

        _previousPlayerState = _currentPlayerState;
        _currentPlayerState  = newState;
    }
Пример #4
0
    bool checkIfAbortOnStateCondition(PlayerStateController.PlayerStates newState)
    {
        bool returnVal = false;

        switch (newState)
        {
        case PlayerStateController.PlayerStates.idle:
            break;

        case PlayerStateController.PlayerStates.left:
            break;

        case PlayerStateController.PlayerStates.right:
            break;

        case PlayerStateController.PlayerStates.jump:
            float nextAllowedJumpTime = PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump];
            if (nextAllowedJumpTime == 0.0f || nextAllowedJumpTime > Time.time)
            {
                returnVal = true;
            }
            break;

        case PlayerStateController.PlayerStates.landing:
            break;

        case PlayerStateController.PlayerStates.falling:
            break;

        case PlayerStateController.PlayerStates.kill:
            break;

        case PlayerStateController.PlayerStates.resurrect:
            break;

        case PlayerStateController.PlayerStates.firingWeapon:
            if (PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.firingWeapon] > Time.time)
            {
                returnVal = true;
            }
            break;
        }
        return(returnVal);
    }
 void onPlayerStateChange(PlayerStateController.PlayerStates newState)
 {
     currentPlayerState = newState;
 }
Пример #6
0
    public void onStateChange(PlayerStateController.PlayerStates newState)
    {
        if (newState == currentState)
        {
            return;
        }
        if (!checkForValidStatePair(newState))
        {
            return;
        }
        if (checkIfAbortOnStateCondition(newState))
        {
            return;
        }
        switch (newState)
        {
        case PlayerStateController.PlayerStates.idle:
            playerAnimator.SetBool("Walking", false);
            break;

        case PlayerStateController.PlayerStates.left:
        case PlayerStateController.PlayerStates.right:
            playerAnimator.SetBool("Walking", true);
            break;

        case PlayerStateController.PlayerStates.jump:
            if (playerHasLanded)
            {
                float jumpDirection = 0.0f;
                if (currentState == PlayerStateController.PlayerStates.left)
                {
                    jumpDirection = -1.0f;
                }
                else if (currentState == PlayerStateController.PlayerStates.right)
                {
                    jumpDirection = 1.0f;
                }
                else
                {
                    jumpDirection = 0.0f;
                }

                body.AddForce(new Vector2(jumpDirection * playerJumpForceHorizontal, playerJumpForceVertical));

                playerHasLanded = false;
                PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f;
            }
            break;

        case PlayerStateController.PlayerStates.landing:
            playerHasLanded = true;
            PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = Time.time + 0.1f;
            break;

        case PlayerStateController.PlayerStates.falling:
            PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f;
            break;

        case PlayerStateController.PlayerStates.kill:
            break;

        case PlayerStateController.PlayerStates.resurrect:
            transform.position = playerRespawnPoint.transform.position;
            transform.rotation = Quaternion.identity;
            body.velocity      = Vector2.zero;
            break;

        case PlayerStateController.PlayerStates.firingWeapon:
            GameObject newBullet = (GameObject)Instantiate(bulletPrefab);
            newBullet.transform.position = bulletSpawnTransform.position;
            PlayerBulletController bullCon = newBullet.GetComponent <PlayerBulletController>();
            bullCon.player = gameObject;
            bullCon.launchBullet();
            onStateChange(currentState);
            PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.firingWeapon] = Time.time + 0.25f;
            break;
        }

        previousState = currentState;
        currentState  = newState;
    }
Пример #7
0
    bool checkForValidStatePair(PlayerStateController.PlayerStates newState)
    {
        bool returnVal = false;

        switch (currentState)
        {
        case PlayerStateController.PlayerStates.idle:
            returnVal = true;
            break;

        case PlayerStateController.PlayerStates.left:
            returnVal = true;
            break;

        case PlayerStateController.PlayerStates.right:
            returnVal = true;
            break;

        case PlayerStateController.PlayerStates.jump:
            if (newState == PlayerStateController.PlayerStates.landing ||
                newState == PlayerStateController.PlayerStates.kill ||
                newState == PlayerStateController.PlayerStates.firingWeapon)
            {
                returnVal = true;
            }
            else
            {
                returnVal = false;
            }
            break;

        case PlayerStateController.PlayerStates.landing:
            if (newState == PlayerStateController.PlayerStates.left ||
                newState == PlayerStateController.PlayerStates.right ||
                newState == PlayerStateController.PlayerStates.idle ||
                newState == PlayerStateController.PlayerStates.firingWeapon)
            {
                returnVal = true;
            }
            else
            {
                returnVal = false;
            }
            break;

        case PlayerStateController.PlayerStates.kill:
            if (newState == PlayerStateController.PlayerStates.resurrect)
            {
                returnVal = true;
            }
            else
            {
                returnVal = false;
            }
            break;

        case PlayerStateController.PlayerStates.resurrect:
            if (newState == PlayerStateController.PlayerStates.idle)
            {
                returnVal = true;
            }
            else
            {
                returnVal = false;
            }
            break;

        case PlayerStateController.PlayerStates.falling:
            returnVal = true;
            break;

        case PlayerStateController.PlayerStates.firingWeapon:
            returnVal = true;
            break;
        }
        return(returnVal);
    }
 void onPlayerStateChange(PlayerStateController.PlayerStates newState)
 {
     currentPlayerState = newState;
 }
    public void onStateChange(PlayerStateController.PlayerStates newState)
    {
        if (newState == currentState)
            return;
        if (!checkForValidStatePair(newState))
            return;
        if (checkIfAbortOnStateCondition(newState))
            return;
        switch (newState)
        {
            case PlayerStateController.PlayerStates.idle:
                playerAnimator.SetBool("Walking", false);
                break;
            case PlayerStateController.PlayerStates.left:
            case PlayerStateController.PlayerStates.right:
                playerAnimator.SetBool("Walking", true);
                break;
            case PlayerStateController.PlayerStates.jump:
                if (playerHasLanded)
                {
                    float jumpDirection = 0.0f;
                    if (currentState == PlayerStateController.PlayerStates.left)
                        jumpDirection = -1.0f;
                    else if (currentState == PlayerStateController.PlayerStates.right)
                        jumpDirection = 1.0f;
                    else
                        jumpDirection = 0.0f;

                    body.AddForce(new Vector2(jumpDirection * playerJumpForceHorizontal, playerJumpForceVertical));

                    playerHasLanded = false;
                    PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f;
                }
                break;

            case PlayerStateController.PlayerStates.landing:
                playerHasLanded = true;
                PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = Time.time + 0.1f;
                break;
            case PlayerStateController.PlayerStates.falling:
                PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f;
                break;
            case PlayerStateController.PlayerStates.kill:
                break;
            case PlayerStateController.PlayerStates.resurrect:
                transform.position = playerRespawnPoint.transform.position;
                transform.rotation = Quaternion.identity;
                body.velocity = Vector2.zero;
                break;
            case PlayerStateController.PlayerStates.firingWeapon:
                GameObject newBullet = (GameObject)Instantiate(bulletPrefab);
                newBullet.transform.position = bulletSpawnTransform.position;
                PlayerBulletController bullCon = newBullet.GetComponent<PlayerBulletController>();
                bullCon.player = gameObject;
                bullCon.launchBullet();
                onStateChange(currentState);
                PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.firingWeapon] = Time.time + 0.25f;
                break;
        }

        previousState = currentState;
        currentState = newState;
    }