2017-02-10 8 views
0

У меня есть этот код, который создает GameObjects в верхней части экрана, а затем они падают.Unity: Instantiate GameObject в верхней части экрана плюс его собственная высота

float RandX = GetRandomXPos(); 
float RandY = screenSize.y; 
Vector3 ballPos = new Vector3(RandX,RandY,0); 
GameObject clone = Instantiate(BallPrefab, ballPos, transform.rotation) as GameObject; 

Это прекрасно работает, но нерест их на в верхней части экрана, так что они просто моргнуть в существование. Я хочу, чтобы они появлялись в верхней части экрана, а также высота сборного блока, чтобы он выглядел вне поля зрения, а затем падал в поле зрения.

Каков наилучший способ получить ту высоту, которую мне нужно компенсировать?

ответ

0

Чтобы получить размер сборного блока, вам необходимо получить информацию об рендерере, которую имеет сборник.

Для этого вы должны получить компонент в своей иерархии, вы можете сделать это с помощью GetComponentInChildren < Renderer>()

После того, как вы получили Renderer, вы можете получить доступ к размерам границ с renderer.bounds.size

Это Vector3, который имеет размеры объекта, высота будучи компонент Y.

Вы можете иметь более одного Renderer в сборном так что вам нужно будет получить их все с GetComponentsInChildren < Renderer>(). и рассчитать сумму всех границ, используя bounds.Encapsulate

var renderer = target.GetComponentInChildren<Renderer>(); 
var height = renderer.bounds.size.y;