Как использовать Screen.Width/height? --Unity3d

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

Я пытался использовать Screen.Width и Screen.Height, но объекты появлялись далеко за пределами экрана. Я понял, что это произошло из-за того, что Screen.width/height возвращает длину в пикселях, а единица — это отдельная единица измерения.

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

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?


person Zachooz    schedule 18.06.2014    source источник


Ответы (2)


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

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

person Formic    schedule 18.06.2014

Сделай это:

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 );
person Ismael Nascimento    schedule 28.09.2017