Пример #1
0
 //Default Value in Inspector
 void Reset()
 {
     m_XAxis           = 0;
     m_YAxis           = 0;
     m_PlayerDirection = E_PlayerDirection.Down;
     m_PlayerType      = E_PlayerType.Warrior;
     m_PlayerSpeed     = 5f;
     m_CurrentRunSpeed = 0f;
     m_IsDead          = false;
     m_IsMoving        = false;
     m_CanMove         = true;
     m_PlayerRigidbody = GetComponent <Rigidbody2D>();
     m_Warrior         = GameObject.Find("Warrior");
     m_Warrior.SetActive(true);
     m_PlayerAnimator = m_Warrior.GetComponent <Animator>();
     m_Mage           = GameObject.Find("Mage");
     m_Mage.SetActive(false);
     m_PlayerRigidbody.gravityScale = 0;
     m_IsAttacking = false;
 }
Пример #2
0
 public Character(E_PlayerType character, int posIndex)//每次扔色子之后都重新初始化一遍,所以不可以定死posindex是0
 {
     this.character = character;
     this.posIndex  = posIndex;
     isPause        = false;
 }
Пример #3
0
    // 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);
        }
    }