// Update is called once per frame void Update() { GameObject.Find("Warrior Health").GetComponent <TextMeshProUGUI>().SetText("Warrior Health: " + m_WarriorHealth); GameObject.Find("Mage Health").GetComponent <TextMeshProUGUI>().SetText("Mage Health: " + m_MageHealth); if (m_MageHealth == 0 || m_WarriorHealth == 0) { GameObject.Find("Losing Text").GetComponent <TextMeshProUGUI>().enabled = true; Time.timeScale = 0; } switch (m_PlayerType) { case E_PlayerType.Mage: m_PlayerAnimator = m_Mage.GetComponent <Animator>(); if (Input.GetKeyDown(KeyCode.X)) { m_PlayerType = E_PlayerType.Warrior; m_Warrior.SetActive(true); m_Mage.SetActive(false); } break; case E_PlayerType.Warrior: m_PlayerAnimator = m_Warrior.GetComponent <Animator>(); if (Input.GetKeyDown(KeyCode.X)) { m_PlayerType = E_PlayerType.Mage; m_Warrior.SetActive(false); m_Mage.SetActive(true); } break; } transform.position += Vector3.zero; if (m_CanMove == true) { m_XAxis = Input.GetAxisRaw("Horizontal"); m_YAxis = Input.GetAxisRaw("Vertical"); m_PlayerAnimator.SetFloat("XInput", m_XAxis); m_PlayerAnimator.SetFloat("YInput", m_YAxis); m_PlayerAnimator.SetBool("IsAttacking", IsAttacking); if (Input.GetKeyDown(KeyCode.Space) && IsMoving == false) { StartCoroutine("Attack"); } switch (m_PlayerDirection) { case E_PlayerDirection.Down: m_PlayerAnimator.SetBool("FaceDown", true); m_PlayerAnimator.SetBool("FaceUp", false); m_PlayerAnimator.SetBool("FaceLeft", false); m_PlayerAnimator.SetBool("FaceRight", false); break; case E_PlayerDirection.Up: m_PlayerAnimator.SetBool("FaceUp", true); m_PlayerAnimator.SetBool("FaceDown", false); m_PlayerAnimator.SetBool("FaceLeft", false); m_PlayerAnimator.SetBool("FaceRight", false); break; case E_PlayerDirection.Left: m_PlayerAnimator.SetBool("FaceLeft", true); m_PlayerAnimator.SetBool("FaceUp", false); m_PlayerAnimator.SetBool("FaceDown", false); m_PlayerAnimator.SetBool("FaceRight", false); break; case E_PlayerDirection.Right: m_PlayerAnimator.SetBool("FaceRight", true); m_PlayerAnimator.SetBool("FaceUp", false); m_PlayerAnimator.SetBool("FaceLeft", false); m_PlayerAnimator.SetBool("FaceDown", false); break; } //Set Direction #region SetDirection if (m_XAxis > 0) { m_PlayerDirection = E_PlayerDirection.Right; } else if (m_XAxis < 0) { m_PlayerDirection = E_PlayerDirection.Left; } else if (YAxis < 0) { m_PlayerDirection = E_PlayerDirection.Down; } else if (YAxis > 0) { m_PlayerDirection = E_PlayerDirection.Up; } #endregion if (Mathf.Abs(m_XAxis) > 0 || Mathf.Abs(YAxis) > 0) { m_IsMoving = true; m_PlayerAnimator.SetBool("IsMoving", m_IsMoving); } else { m_IsMoving = false; m_PlayerAnimator.SetBool("IsMoving", m_IsMoving); } m_PlayerRigidbody.velocity = new Vector2(m_XAxis * m_PlayerSpeed, m_YAxis * m_PlayerSpeed); } }
void FixedUpdate() { m_IsGrounded = Physics2D.OverlapPoint(m_GroundCheck.position, m_GroundLayer); if (m_CanMove == true) { //Set axis movement #region SetAxisMovement //Movement on X-axis m_XAxis = Input.GetAxisRaw("Horizontal"); //Movement on Y-axis m_YAxis = Input.GetAxisRaw("Vertical"); #endregion /*If Movement on Y-axis yield greater then .001 * and player is grounded, then add force to the player * and make him jump */ if (m_YAxis > 0 && m_IsGrounded) { Vector2 BaseJump = new Vector2(m_PlayerSpeed * m_XAxis, m_YAxis * m_JumpForce); Vector2 AdditionalJumpSpeed = new Vector2(m_CurrentRunSpeed * m_XAxis, m_CurrentRunSpeed * m_YAxis); m_PlayerRB.velocity = BaseJump + AdditionalJumpSpeed; m_IsGrounded = false; } //Handles speed between moving and running #region Moving and Running if (m_IsGrounded == true) { //Switch max velocity based on if they are running or walking if (m_IsMoving == true && m_IsRunning == false) { //Switch from running to not running slow down the player until walking speed if (m_CurrentRunSpeed > 0) { m_CurrentRunSpeed -= m_RunSpeedIncrement * Time.deltaTime; } Vector2 AdditionalSpeed = new Vector2(m_CurrentRunSpeed * m_XAxis, m_PlayerRB.velocity.y); //Set the velocity of mario this.m_PlayerRB.velocity = new Vector2((m_PlayerSpeed * m_XAxis) + AdditionalSpeed.x, this.m_PlayerRB.velocity.y); } else if (m_IsMoving == true && m_IsRunning == true) { if (m_CurrentRunSpeed < m_MaxRunSpeed) { m_CurrentRunSpeed += m_RunSpeedIncrement * Time.deltaTime; } Vector2 BaseSpeed = new Vector2(m_PlayerSpeed * m_XAxis, m_PlayerRB.velocity.y); Vector2 AdditionalSpeed = new Vector2(m_CurrentRunSpeed * m_XAxis, m_PlayerRB.velocity.y); this.m_PlayerRB.velocity = new Vector2(BaseSpeed.x + AdditionalSpeed.x, m_PlayerRB.velocity.y); } else { m_CurrentRunSpeed = 0; } } #endregion //Determine if player is running #region CheckIfRunning if (Input.GetKeyDown(KeyCode.LeftShift)) { m_IsRunning = true; } else if (Input.GetKeyUp(KeyCode.LeftShift)) { m_IsRunning = false; } #endregion //If absolute of x-axis is greater then one, then they are consider moving #region CheckIsMoving if (Mathf.Abs(m_XAxis) > 0 || Mathf.Abs(m_YAxis) > 0) { m_IsMoving = true; m_Animator.SetBool("IsMoving", true); } else { m_IsMoving = false; m_Animator.SetBool("IsMoving", false); } #endregion //Set Sprite direction depending on x axis movement #region SetSpriteDirection //Set Sprite Right if (m_XAxis > 0) { m_SpriteRenderer.flipX = false; m_PlayerDirection = E_PlayerDirection.Right; } //Set Sprite Left else if (m_XAxis < 0) { m_SpriteRenderer.flipX = true; m_PlayerDirection = E_PlayerDirection.Left; } #endregion } }