예제 #1
0
    // Use this for initialization
    void Start()
    {
        menuState   = MenuState.None;
        actionState = ActionState.None;

        pickedBlockType = BlockType.None;
        pickedBlock     = null;

        didMenuChange = false;
        elapsedTime   = 0.0f;
        blockCount    = 0;

        mainCamera           = Camera.main;
        gameObjectController = FindObjectOfType <GameObjectController>();
        statePanelController = FindObjectOfType <StatePanelController>();

        raycastPoint    = GameObject.Find("RaycastPoint");
        leapEventSystem = GameObject.Find("LeapEventSystem");
        canvas          = GameObject.Find("Canvas");
        mainPanel       = GameObject.Find("MainPanel");
        settingsPanel   = GameObject.Find("SettingsPanel");
        addPanel        = GameObject.Find("AddPanel");
        editPanel       = GameObject.Find("EditPanel");

        UpdateBackgroundColor(0.125f, 0.125f, 0.125f);

        raycastPoint.SetActive(false);
        canvas.SetActive(false);
        mainPanel.SetActive(false);
        settingsPanel.SetActive(false);
        addPanel.SetActive(false);
        editPanel.SetActive(false);
    }
예제 #2
0
    void Update()
    {
        if (Input.touchCount > 0)
        {
            Touch touch = Input.GetTouch(0);

            touchPosition = touch.position;

            if (touch.phase == TouchPhase.Began)
            {
                Ray ray = arCamera.ScreenPointToRay(touchPosition);
                if (Physics.Raycast(ray, out RaycastHit hitObject))
                {
                    if (hitObject.collider.gameObject.GetComponent <Renderer>().enabled == true)
                    {
                        GameObjectController goc = gameObject.AddComponent <GameObjectController>();
                        goc.ToggleChildren(hitObject.collider.gameObject, true);
                    }
                    else
                    {
                        GameObjectController goc = gameObject.AddComponent <GameObjectController>();
                        goc.ToggleChildren(hitObject.collider.gameObject, false);
                    }
                }
            }
        }
    }
예제 #3
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == Block.Tag)
        {
            Block block = collision.gameObject.GetComponent <Block>();
            GameObjectController gameObjectController = Toolbox.GameObjectController;
            GameController       gameController       = Toolbox.GameController;

            gameObjectController.DestroyBlock(block);
            gameController.AddPoints(block.points);
            if (gameObjectController.gameBlocks.Count == 0)
            {
                gameController.GoToNextLevel();
            }
        }
    }
예제 #4
0
 /// <summary>
 /// 全体抓取
 /// </summary>
 public void AllCatch()
 {
     C_GOC.Clear();
     //遍历非战斗单位的Nav并添加进来
     for (int i = 0; i < CatchFunction._instance.L_Nav.Count; i++)
     {
         F2_Nav.Add(CatchFunction._instance.L_Nav[i]);
         m_gameobject = CatchFunction._instance.L_Nav[i].GetComponent <GameObjectController>();
         C_GOC.Add(m_gameobject);
         m_gameobject.isBeCatch = true;
         isCtach   = false;
         isSingle  = false;
         catchMove = false;
         isF2      = true;
     }
 }
예제 #5
0
    private void SyncMonsterAction()
    {
        List <GameObject> list = HasActionObjectManager.Instance.monsterManager.listObj();

        for (int i = 0; i < list.Count; i++)
        {
            MonsterSyncActionPakage package = PackageFactory.GetPackage(PackageType.MonsterSyncAction)
                                              as MonsterSyncActionPakage;
            GameObjectController controller = list[i].GetComponent <GameObjectController>();
            package.aoId      = controller.baseAttribute.aoId;
            package.direction = controller.gameObjectInputState.moveDirection;
            package.isJump    = controller.gameObjectInputState.jump;
            package.actionId  = controller.goActionController.curAction.actionData.id;
            package.yRotate   = list[i].transform.localRotation.eulerAngles.y;
            SendPackage(package);
        }
    }
예제 #6
0
    /// <summary>
    /// 矩阵检测
    /// </summary>
    /// <param name="start"></param>
    /// <param name="end"></param>
    private void CheckSelection(Vector3 start, Vector3 end)
    {
        Vector3 p1 = Vector3.zero;
        Vector3 p2 = Vector3.zero;

        if (start.x > end.x)
        {
            //这些判断是用来确保p1的xy坐标小于p2的xy坐标,因为画的框不见得就是左下到右上这个方向的
            p1.x = end.x;
            p2.x = start.x;
        }
        else
        {
            p1.x = start.x;
            p2.x = end.x;
        }
        if (start.y > end.y)
        {
            p1.y = end.y;
            p2.y = start.y;
        }
        else
        {
            p1.y = start.y;
            p2.y = end.y;
        }

        for (int i = 0; i < CreateFunction._instance.allGameobject.Count; i++)
        {
            m_gameobject           = CreateFunction._instance.allGameobject[i].GetComponent <GameObjectController>();
            m_gameobject.isBeCatch = false;
            Vector3 location = M_C.WorldToScreenPoint(CreateFunction._instance.allGameobject[i].transform.position);//把对象的position转换成屏幕坐标
            Debug.Log(m_gameobject.name + ":" + location);
            if (location.x < p1.x || location.x > p2.x || location.y < p1.y || location.y > p2.y ||
                location.z < Camera.main.nearClipPlane || location.z > Camera.main.farClipPlane)   //z方向就用摄像机的设定值,看不见的也不需要选择了
            {
                //Null
            }
            else
            {
                CatchFunction._instance.C_GOC.Add(m_gameobject);
                CatchFunction._instance.C_Nav.Add(CreateFunction._instance.allGameobject[i].GetComponent <NavMeshAgent>());
                m_gameobject.isBeCatch = true;
            }
        }
    }
예제 #7
0
 /// <summary>
 /// 单个选取
 /// </summary>
 public void SingleCatch(RaycastHit hit)
 {
     if (C_GOC != null)
     {
         Debug.Log("Close");
         for (int i = 0; i < C_GOC.Count; i++)
         {
             C_GOC[i].isBeCatch = false;
         }
     }
     if (m_gameobject != null)
     {
         m_gameobject.isBeCatch = false;
     }
     //改变所有选取状态
     isSingle  = true;
     isCtach   = false;
     catchMove = false;
     isF2      = false;
     //获取特效UI组件设置开关
     m_gameobject           = hit.collider.GetComponent <GameObjectController>();
     m_gameobject.isBeCatch = true;
     Nav = hit.collider.GetComponent <NavMeshAgent>();
 }
예제 #8
0
 public void Start()
 {
     key = controller.GetComponent<GameController>().keysController; //obtenesmos las teclas configuradas
     goController = controller.GetComponent<GameController>().GOController;
 }