Ejemplo n.º 1
0
        // Use this for initialization
        void Start()
        {
            if (_debug)
            {
                Debug.Log("Debug mode on");
                debugCanvasObject.gameObject.SetActive(true);
                debugMessage.text = "Initializing";
            }
            else
            {
                debugCanvasObject.gameObject.SetActive(false);
            }

            // Initializing
            _floorDetectionStatus = FloorDetectionStatus.Initializing;
            imageMask.gameObject.SetActive(false);
            _baseVector = new Vector3(0, _baseHight, -(_baseDistance / 2f) * (_targetDistance / _baseDistance));

            // Added hook event for AR
            UnityARSessionNativeInterface.ARAnchorAddedEvent += AddAnchor;

            // Mode Changed to Finding state
            _floorDetectionStatus = FloorDetectionStatus.Finding;
            Debug.Log("Finding Floor");
            if (_debug)
            {
                debugMessage.text = "Finding Floor";
            }
        }
Ejemplo n.º 2
0
 void StartGame()
 {
     _floorDetectionStatus = FloorDetectionStatus.GameStarting;
     imageMask.gameObject.SetActive(true);
     // Display Count down timer
     _timeCount       = MAX_TIME;
     mainMessage.text = ((int)_timeCount).ToString();
     _positionTracker = GetComponent <PositionTracker>();
     _playerObj       = new GameObject[2];
     for (int i = 0; i < 2; i++)
     {
         _playerObj[i] = Instantiate(playerPrefab, GetPlayerPositionInGod(_positionTracker.PlayerPosition(i, i)), Quaternion.Euler(_positionTracker.PlayerRotation(i, i)));
         _playerObj[i].transform.localScale = Resize(_playerObj[i].transform.localScale);
         _playerObj[i].GetComponent <PlayerController>().SetPlayerId(i);
     }
 }
Ejemplo n.º 3
0
        // Update is called once per frame
        void Update()
        {
            if (_debug)
            {
                debugPositionText.text = "Current Position \n" +
                                         "x = " + Camera.main.transform.position.x.ToString() + "\n" +
                                         "y = " + Camera.main.transform.position.y.ToString() + "\n" +
                                         "z = " + Camera.main.transform.position.z.ToString() + "\n" +
                                         "base = " + string.Format("x:{0:0.######} y:{1:0.######} z:{2:0.######}", _basePoint.x, _basePoint.y, _basePoint.z);
            }
            if (_floorDetectionStatus == FloorDetectionStatus.GameStarting)
            {
                _timeCount      -= Time.deltaTime;
                mainMessage.text = ((int)_timeCount).ToString();
                if (_timeCount <= 1 && _timeCount > 0)
                {
                    mainMessage.text = "Start!";
                    imageMask.gameObject.SetActive(false);
                }
                else if (_timeCount <= 0)
                {
                    mainMessage.text = "";
                    mainMessage.gameObject.SetActive(false);
                    _floorDetectionStatus = FloorDetectionStatus.GameStarted;
                }
            }
            else if (_floorDetectionStatus == FloorDetectionStatus.GameStarted)
            {
                // Get base position


                // Update position
                for (int i = 0; i < 2; i++)
                {
                    _playerObj[i].transform.position = GetPlayerPositionInGod(_positionTracker.PlayerPosition(i, i));
                    _playerObj[i].transform.rotation = Quaternion.Euler(_positionTracker.PlayerRotation(i, i));
                }
            }
        }
Ejemplo n.º 4
0
        public void AddAnchor(ARPlaneAnchor arPlaneAnchor)
        {
            if (_floorDetectionStatus == FloorDetectionStatus.Finding)
            {
                if (_debug)
                {
                    debugMessage.text = "Anchor added";
                }
                Debug.Log("New Anchor added");


                // Get point of battle field by using ray from center of display to detected floor and
                Vector3 center         = new Vector3(Screen.width / 2, Screen.height / 2, 0.5f);
                var     screenPosition = Camera.main.ScreenToViewportPoint(center);
                ARPoint point          = new ARPoint
                {
                    x = screenPosition.x,
                    y = screenPosition.y
                };

                List <ARHitTestResult> hitResults = UnityARSessionNativeInterface.GetARSessionNativeInterface().HitTest(point, ARHitTestResultType.ARHitTestResultTypeExistingPlane);
                if (hitResults.Count > 0)
                {
                    foreach (var hitResult in hitResults)
                    {
                        _basePoint = UnityARMatrixOps.GetPosition(hitResult.worldTransform) + _baseVector;
                    }
                }

                // Change floor detection status to detected
                _floorDetectionStatus = FloorDetectionStatus.Found;
                Debug.Log("Floor detected");
                mainMessage.text = "Detection Complete";

                // Invoke StartGame() with delay
                Invoke("StartGame", 0.5f);
            }
        }