public void CallOnUpdate(CollisionState collisionState)
    {
        if (m_ladderState == LadderState.JumpOff)
        {
            return;
        }

        if (m_ladderState != LadderState.None)
        {
            float climb = Input.GetAxis("Vertical");
            Offset = (climb * 0.02f);
        }
        else
        {
            Offset = 0.0f;
        }

        if (m_ladderState == LadderState.AtTop && Offset > 0.0f)
        {
            Offset = 0.0f;
        }

        if (collisionState == CollisionState.OnFloor && Offset < 0.0f)
        {
            Offset = 0.0f;
        }

        if (Input.GetButton("Jump") && m_ladderState != LadderState.None)
        {
            m_ladderState = LadderState.JumpOff;
            Offset        = 0.0f;
        }
    }
    public void CallOnTriggerExit(Collider collider, ref PlayerState playerState)
    {
        if (m_ladderState == LadderState.JumpOff)
            return;

        if (Offset == 0.0f) {
            m_ladderState = LadderState.None;
        }
    }
    public void CallOnTriggerExit(Collider collider, ref PlayerState playerState)
    {
        if (m_ladderState == LadderState.JumpOff)
        {
            return;
        }

        if (Offset == 0.0f)
        {
            m_ladderState = LadderState.None;
        }
    }
Esempio n. 4
0
        private void Awake()
        {
            rigidbody = GetComponent <Rigidbody2D>();
            collider  = GetComponent <Collider2D>();
            animator  = GetComponent <Animator>();


            stateMachine = ScriptableObject.CreateInstance <StateMachine>();
            groundState  = new GroundState(this);
            ladderState  = new LadderState(this);
            jumpState    = new JumpState(this);
            dieState     = new DieState(this);

            stateMachine.ChangeState(groundState);
        }
    public void CallOnTriggerStay(Collider collider, ref PlayerState playerState)
    {
        if (m_ladderState == LadderState.JumpOff)
            return;

        string state = collider.gameObject.name;

        if (state == "LadderBASE") {
            m_ladderState = LadderState.AtBase;
        } else if (state == "LadderMID") {
            m_ladderState = LadderState.AtMiddle;
        } else if (state == "LadderTOP") {
            m_ladderState = LadderState.AtTop;
        }
    }
    public void CallOnTriggerStay(Collider collider, ref PlayerState playerState)
    {
        if (m_ladderState == LadderState.JumpOff)
        {
            return;
        }

        string state = collider.gameObject.name;

        if (state == "LadderBASE")
        {
            m_ladderState = LadderState.AtBase;
        }
        else if (state == "LadderMID")
        {
            m_ladderState = LadderState.AtMiddle;
        }
        else if (state == "LadderTOP")
        {
            m_ladderState = LadderState.AtTop;
        }
    }
Esempio n. 7
0
    void OnTriggerExit(Collider collision)
    {
        if (this.name == "LadderBASE" && collision.name == "Player Spawn")
        {
            GameObject playerObject = collision.gameObject;
            if (playerObject == null)
            {
                return;
            }

            CEntityPlayer player = playerObject.GetComponent <CEntityPlayer>();
            if (player == null)
            {
                return;
            }

            LadderState currentLadderState = player.Physics.GetLadder.state;

            if (currentLadderState == LadderState.AtBase)
            {
                player.Physics.GetLadder.state = LadderState.None;
            }
        }
    }
Esempio n. 8
0
    public bool CheckLadder(Collider collision)
    {
        if (this.name == "LadderBASE" && collision.name == "Player Spawn")
        {
            GameObject playerObject = collision.gameObject;
            if (playerObject == null)
            {
                return(false);
            }

            CEntityPlayer player = playerObject.GetComponent <CEntityPlayer>();
            if (player == null)
            {
                return(false);
            }

            LadderState currentLadderState = player.Physics.GetLadder.state;

            if (currentLadderState == LadderState.None || currentLadderState == LadderState.OnMiddle || currentLadderState == LadderState.JumpingOff)
            {
                player.Physics.GetLadder.state = LadderState.AtBase;
            }

            return(true);
        }

        if (this.name == "LadderMID" && collision.name == "Player Spawn")
        {
            GameObject playerObject = collision.gameObject;
            if (playerObject == null)
            {
                return(false);
            }

            CEntityPlayer player = playerObject.GetComponent <CEntityPlayer>();
            if (player == null)
            {
                return(false);
            }

            LadderState currentLadderState = player.Physics.GetLadder.state;

            if (player.GetPlayerState() == PlayerState.OnLadder || currentLadderState == LadderState.None)
            {
                player.Physics.GetLadder.state = LadderState.OnMiddle;
                player.SetPlayerState(PlayerState.OnLadder);
                player.Physics.CurrentCollisionState = CollisionState.None;
            }

            return(true);
        }

        if (this.name == "LadderTOP" && collision.name == "Player Spawn")
        {
            GameObject playerObject = collision.gameObject;
            if (playerObject == null)
            {
                return(false);
            }

            CEntityPlayer player = playerObject.GetComponent <CEntityPlayer>();
            if (player == null)
            {
                return(false);
            }

            LadderState currentLadderState = player.Physics.GetLadder.state;

            if (currentLadderState == LadderState.OnMiddle)
            {
                player.Physics.GetLadder.state = LadderState.OnTop;
                player.SetPlayerState(PlayerState.OnLadder);
                player.Physics.CurrentCollisionState = CollisionState.None;
            }

            return(true);
        }

        return(false);
    }
Esempio n. 9
0
    public void OnFixedUpdate(ref PlayerState playerState, LadderState ladderState, FootMaterial footMaterial)
    {
        if (playerState == PlayerState.Walking)
        {
            m_currentAnimation = "Run";
            if (!m_animation.IsPlaying("Run"))
            {
                m_animation.CrossFade("Run", 0.2f);
                PlayFootstepAudio(footMaterial);
            }
        }
        else if (playerState == PlayerState.Turning)
        {
            m_currentAnimation = "Turning Around";
            if (!m_animation.IsPlaying("Running Turn") && !m_startedTurningRound)
            {
                m_startedTurningRound = true;
                m_animation.CrossFade("Running Turn");
            }
            else if (!m_animation.IsPlaying("Running Turn"))
            {
                m_startedTurningRound = false;
                playerState           = PlayerState.Walking;
            }
        }
        else if (playerState == PlayerState.Standing)
        {
            m_currentAnimation = "Idle";
            m_animation["Idle Simple"].speed = 0.2f;
            if (!m_animation.IsPlaying("Idle Simple"))
            {
                m_animation.CrossFade("Idle Simple");
            }
        }
        else if (playerState == PlayerState.Jumping)
        {
            m_currentAnimation = "Running";
            if (!m_animation.IsPlaying("Running Jump (NEW)"))
            {
                m_animation.Play("Running Jump (NEW)");
            }
        }
        else if (playerState == PlayerState.FallJumping)
        {
            m_currentAnimation = "Falling";
            if (!m_animation.IsPlaying("Falling Loop"))
            {
                m_animation.CrossFade("Falling Loop");
            }
        }
        else if (playerState == PlayerState.LedgeHang)
        {
            m_currentAnimation = "Ledge Hang";
            if (!m_animation.IsPlaying("Wall Hang Idle"))
            {
                m_animation.CrossFade("Wall Hang Idle");
                m_startedLedgeClimb = false;
            }
        }
        else if (playerState == PlayerState.LedgeClimb)
        {
            m_currentAnimation = "Ledge Climbing";
            if (!m_animation.IsPlaying("Climb from Free Hang") && !m_startedLedgeClimb)
            {
                m_animation.CrossFade("Climb from Free Hang");
                m_startedLedgeClimb = true;
            }
            else if (m_startedLedgeClimb == true && !m_animation.IsPlaying("Climb from Free Hang"))
            {
                playerState         = PlayerState.LedgeClimbComplete;
                m_startedLedgeClimb = false;
            }
        }
        else if (playerState == PlayerState.FallingFromTower)
        {
            m_currentAnimation = "Falling";
            if (!m_animation.IsPlaying("Falling Loop"))
            {
                m_animation.CrossFade("Falling Loop");
            }
        }
        else if (playerState == PlayerState.UpALadder)
        {
            float upDown = Input.GetAxis("Vertical");

            m_currentAnimation = "Ladder";

            if ((upDown != 0.0f && ladderState != LadderState.AtTop) || (ladderState == LadderState.AtTop && upDown < 0))
            {
                bool forceAnimationChange = upDown > 0.0f && m_animation["Ladder Up"].speed > 0.0f ? false : true;
                if (!m_animation.IsPlaying("Ladder Up") || forceAnimationChange)
                {
                    m_animation["Ladder Up"].speed = upDown > 0.0f ? 2.0f : -2.0f;
                    m_animation.Play("Ladder Up");
                }

                if (m_animation.IsPlaying("Ladder Up"))
                {
                    PlayFootstepAudio(FootMaterial.Metal);
                }
            }
            else
            {
                m_animation["Ladder Up"].speed = 0.0f;
                if (!m_animation.IsPlaying("Ladder Up"))
                {
                    m_animation.Play("Ladder Up");
                }
            }
        }
    }
    public void OnFixedUpdate(ref PlayerState playerState, LadderState ladderState, FootMaterial footMaterial)
    {
        if (playerState == PlayerState.Walking)
        {
            m_currentAnimation = "Run";
            if (!m_animation.IsPlaying("Run"))
            {
                m_animation.CrossFade("Run", 0.2f);
                PlayFootstepAudio(footMaterial);
            }
        }
        else if (playerState == PlayerState.Turning)
        {
            m_currentAnimation = "Turning Around";
            if (!m_animation.IsPlaying("Running Turn") && !m_startedTurningRound)
            {
                m_startedTurningRound = true;
                m_animation.CrossFade("Running Turn");
            }
            else if (!m_animation.IsPlaying("Running Turn"))
            {
                m_startedTurningRound = false;
                playerState = PlayerState.Walking;
            }
        }
        else if (playerState == PlayerState.Standing)
        {
            m_currentAnimation = "Idle";
            m_animation["Idle Simple"].speed = 0.2f;
            if (!m_animation.IsPlaying("Idle Simple"))
                m_animation.CrossFade("Idle Simple");
        }
        else if (playerState == PlayerState.Jumping)
        {
            m_currentAnimation = "Running";
            if (!m_animation.IsPlaying("Running Jump (NEW)"))
                m_animation.Play("Running Jump (NEW)");
        }
        else if (playerState == PlayerState.FallJumping)
        {
            m_currentAnimation = "Falling";
            if (!m_animation.IsPlaying("Falling Loop"))
                m_animation.CrossFade("Falling Loop");
        }
        else if (playerState == PlayerState.LedgeHang)
        {
            m_currentAnimation = "Ledge Hang";
            if (!m_animation.IsPlaying("Wall Hang Idle")) {
                m_animation.CrossFade("Wall Hang Idle");
                m_startedLedgeClimb = false;
            }
        }
        else if (playerState == PlayerState.LedgeClimb)
        {
            m_currentAnimation = "Ledge Climbing";
            if (!m_animation.IsPlaying("Climb from Free Hang") && !m_startedLedgeClimb) {
                m_animation.CrossFade("Climb from Free Hang");
                m_startedLedgeClimb = true;
            }
            else if (m_startedLedgeClimb == true && !m_animation.IsPlaying("Climb from Free Hang")) {
                playerState = PlayerState.LedgeClimbComplete;
                m_startedLedgeClimb = false;
            }
        }
        else if (playerState == PlayerState.FallingFromTower)
        {
            m_currentAnimation = "Falling";
            if (!m_animation.IsPlaying("Falling Loop"))
                m_animation.CrossFade("Falling Loop");
        }
        else if (playerState == PlayerState.UpALadder)
        {
            float upDown = Input.GetAxis("Vertical");

            m_currentAnimation = "Ladder";

            if ((upDown != 0.0f && ladderState != LadderState.AtTop) || (ladderState == LadderState.AtTop && upDown < 0))
            {
                bool forceAnimationChange = upDown > 0.0f && m_animation["Ladder Up"].speed > 0.0f ? false : true;
                if (!m_animation.IsPlaying("Ladder Up") || forceAnimationChange)
                {
                    m_animation["Ladder Up"].speed = upDown > 0.0f ? 2.0f : -2.0f;
                    m_animation.Play("Ladder Up");
                }

                if (m_animation.IsPlaying("Ladder Up"))
                {
                    PlayFootstepAudio(FootMaterial.Metal);
                }

            }
            else
            {
                m_animation["Ladder Up"].speed = 0.0f;
                if (!m_animation.IsPlaying("Ladder Up"))
                    m_animation.Play("Ladder Up");
            }
        }
    }
    public void CallOnUpdate(CollisionState collisionState)
    {
        if (m_ladderState == LadderState.JumpOff)
            return;

        if (m_ladderState != LadderState.None)
        {
            float climb = Input.GetAxis("Vertical");
            Offset = (climb * 0.02f);
        }
        else {
            Offset = 0.0f;
        }

        if (m_ladderState == LadderState.AtTop && Offset > 0.0f) {
            Offset = 0.0f;
        }

        if (collisionState == CollisionState.OnFloor && Offset < 0.0f) {
            Offset = 0.0f;
        }

        if (Input.GetButton("Jump") && m_ladderState != LadderState.None) {
            m_ladderState = LadderState.JumpOff;
            Offset = 0.0f;
        }
    }