Exemplo n.º 1
0
    void Update()
    {
        if (IsPointerOverGameObject(Input.mousePosition))
        {
            if (mMobileTouchCamera.enabled)
            {
                mMobileTouchCamera.enabled = false;
            }
            return;
        }
        if (!mMobileTouchCamera.enabled)
        {
            mMobileTouchCamera.enabled = true;
        }
        RaycastHit hit;
        // 从鼠标所在的位置发射
        Vector2 screenPosition = Input.mousePosition;

        if (Physics.Raycast(Camera.main.ScreenPointToRay(screenPosition), out hit))
        {
            // 1.点击格子,主要用于行军
            Vector3 pointCubePosition = MapManager.GetInstance().TerrainPositionToCenterPosition(hit.point);
            pointCubePosition.y           = mOriginalPosition.y;
            mPointCube.transform.position = pointCubePosition;
            if (Input.GetMouseButtonUp(0))
            {
                // 这个主要是因为防止刚刚点击武将,战斗菜单就显示出来了
                if (msIgnoreRaycast)
                {
                    msIgnoreRaycast = false;
                    return;
                }
                Wujiang currentWujiang = Wujiang.GetCurrentWujiang();
                if (currentWujiang != null)
                {
                    // 1.当前处于要攻击状态
                    // 这个主要是因为防止刚刚点击武将,战斗菜单就显示出来了
                    if (currentWujiang.GetWujiangState() == WujiangState.WujiangState_Prepare_Attack)
                    {
                        // 释放技能
                        mCanvasBattleMenu.MoveAndStartSkill(MapManager.GetInstance().TerrainPositionToCorrdinate(pointCubePosition));
                        return;
                    }
                    // 2.显示战斗菜单
                    currentWujiang.ShowBattleMeun(new Vector3(mPointCube.transform.position.x, currentWujiang.transform.position.y, mPointCube.transform.position.z));
                    return;
                }
                // 2.点击城市
                if (hit.collider.CompareTag("City"))
                {
                    if (currentWujiang != null || Pathfinding.GetInstance().IsShowingPath())
                    {
                        return;
                    }
                    if (Input.GetMouseButtonUp(0))
                    {
                        GameObject city;
                        if (hit.collider.gameObject.name.Equals("Model"))
                        {
                            // 关隘
                            city = hit.collider.transform.parent.gameObject;
                        }
                        else
                        {
                            // 港口
                            city = hit.collider.transform.gameObject;
                        }
                        // 显示小菜单
                        mCanvasGameMenu.SetCity(city.GetComponent <City>());
                        mCanvasGameMenu.ShowCanvasGameMenu(screenPosition);
                    }
                }
            }
        }
        // 3.点击空白
        if (Input.GetMouseButtonDown(0))
        {
            mCanvasGameMenu.gameObject.SetActive(false);
            mCanvasBattleMenu.gameObject.SetActive(false);
        }
    }