Пример #1
0
    // Update is called once per frame
    void Update()
    {
        if (m_isCanAction)
        {
            if (Input.GetMouseButtonDown(1))
            {
                m_currentPlayerActionType = PlayerActionType.Null;
            }
            switch (m_currentPlayerActionType)
            {
            case PlayerActionType.Null:
                break;

            case PlayerActionType.CanMove:
            {
                if (Input.GetMouseButtonDown(0))
                {
                    RaycastHit hit;
                    if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
                    {
                        if (hit.collider.CompareTag("MapItem"))
                        {
                            if (hit.collider.GetComponent <MapItem>().m_isWalkable)
                            {
                                Move(hit.collider.GetComponent <MapItem>().m_itemPosVector2);
                            }
                        }
                    }
                }
            }
            break;

            case PlayerActionType.CanAttack:
            {
                if (Input.GetMouseButtonDown(0))
                {
                    RaycastHit[] hits = Physics.RaycastAll(Camera.main.ScreenPointToRay(Input.mousePosition));
                    if (hits != null)
                    {
                        for (int i = 0; i < hits.Length; i++)
                        {
                            if (hits[i].collider.CompareTag("Enemy"))
                            {
                                Vector3 enemyPos = hits[i].collider.transform.position;
                                if (MapMgr.Instance.m_mapItems[(int)enemyPos.x, (int)enemyPos.z].m_currentType == MapItemType.Enemy)
                                {
                                    Attack(hits[i].collider.GetComponent <AICtrl>());
                                    break;
                                }
                            }
                        }
                    }
                }
                break;
            }

            case PlayerActionType.CanAddNumber:
            {
                if (Input.GetMouseButtonDown(0))
                {
                    RaycastHit[] hits = Physics.RaycastAll(Camera.main.ScreenPointToRay(Input.mousePosition));
                    if (hits != null)
                    {
                        for (int i = 0; i < hits.Length; i++)
                        {
                            if (hits[i].collider.CompareTag("Player"))
                            {
                                m_actionCtrl.OverAction();
                                break;
                            }
                        }
                    }
                }
            }
            break;
            }
        }
    }