#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 );