2016-12-25 17 views
-1

hi Я работаю над простым игровым проектом, и я хочу создать экземпляр игрового объекта с позиции, на которую я касаюсь экрана. Я написал следующий код, но координаты не совпадают. это экземпляр объекта, но я не могу видеть, где он находится на экране, я думаю, что есть что-то я скучаю, чтобы исправить это, и я не знаю, как здесь код:Единство C# касание координат

if (Input.GetTouch(0).phase == TouchPhase.Began) 
     { 

      Debug.Log("touch begun" + Input.GetTouch(0).position); 
      Vector3 touchDeltaPosition = Input.GetTouch(0).position; 
      Instantiate(bulletPrefab, Input.GetTouch(0).position, Quaternion.identity); 

     } 

ответ

0

Значение Input.GetTouch (0) .position находится в пиксельных координатах экрана. Реализация объекта в мировых космических координатах. Вы должны получить координаты угла экрана в мировом пространстве и смещение x и y оттуда с помощью значений касания.

Попробуйте это:

 if (Input.GetTouch(0).phase == TouchPhase.Began) 
     { 
      Vector3 touchData = Input.GetTouch(0).position; 

      touchData.x = x; 
      touchData.y = y; 
      // Construct a ray from the current touch coordinates 
      Ray ray = Camera.main.ScreenPointToRay(new Vector2(touchData.x, touchData.y)); 
      if (Physics.Raycast(ray)) 
      { 
       float desiredValueForZ = 2f; //this depends on your project stuff, I don't know. 
       Instantiate(bulletPrefab, Camera.main.ScreenToWorldPoint(new Vector3(touchData.x, touchData.y, desiredValueForZ)), transform.rotation); 
      } 
     }