Exemple #1
0
    //1Fに1回呼ばれる
    public Vector2?GetInputPoint()
    {
        if (CM.isUpdate())
        {
            Hashtable ht = CM.Get();
            return(new Vector2((float)ht["x"], (float)ht["y"]));
        }

        return(null);
    }
    void Update()
    {
        // 画面に弾がヒットした場合 isUpdate() はtrueを返す。
        if (_coordinateManager.isUpdate() && !_isGameEnd)
        {
            // CoordinateManagerから情報を取得。
            Hashtable res = _coordinateManager.Get();
            Vector3   pos = new Vector3((float)res["x"], (float)res["y"], 0f);

            // 受け取った座標をRayに変換
            Ray ray = Camera.main.ScreenPointToRay(pos);

            // Raycast処理
            RaycastHit hit = new RaycastHit();
            if (Physics.Raycast(ray, out hit))
            {
                GameObject hitObj = hit.collider.gameObject;

                PlayEffect(pos);

                if (hitObj.name == "Target")
                {
                    _targetCount--;
                }

                _uiView.SetTargetCount(_targetCount);

                if (_targetCount <= 0)
                {
                    _isGameEnd = true;
                    _uiView.DisplayGameEnd();

                    // scoreをGameControllerに送信。
                    SendScore();

                    // ゲームの終わりを通知し、メニュー画面へ
                    _gameController.GameEnd();
                }
            }
        }
    }