Как использовать Screen.Ширина / высота? —Unity3d

#unity3d

#unity3d

Вопрос:

Я пытаюсь случайным образом создавать экземпляры объектов на экране в Unity 2d

Я пытался использовать Screen.Ширина и экран.Высота, но объекты появлялись далеко от экрана. Я понял, что это связано с тем, что Screen.width / height возвращает длину в пикселях, а unity — свою собственную единицу.

Например, это не сработало. Бомба появляется далеко за пределами экрана

 var randomX = Random.Range(-Screen.width/2, Screen.width/2);
var randomY = Random.Range(-Screen.height/2, Screen.height.2);
var spawnPoint:Vector2 = new Vector3(randomX , randomY);
Instantiate( bomb, spawnPoint, Quaternion.identity );
  

Есть ли способ преобразовать пиксели в единицы измерения Unity?

Ответ №1:

Конечно, используйте ScreenToWorldPoint.

Обратите внимание, что API сообщает вам, что нижний левый угол экрана равен 0,0, поэтому вы захотите соответствующим образом изменить свой RandomX / Y.

Ответ №2:

Сделайте это:

 Vector3 worldToScreen = Camera.main.WorldToScreenPoint(transform.position);

var randomX = Random.Range(-worldToScreen.x , worldToScreen.x);
var randomY = Random.Range(-worldToScreen.y , worldToScreen.y);
var spawnPoint:Vector2 = new Vector3(randomX , randomY);
Instantiate( bomb, spawnPoint, Quaternion.identity );