Я новичок в Unity2D (Unity 5.0.2f1) и искал решение, которое, я уверен, смотрит на меня прямо в лицо!Unity2D C# Случайно Spawn GameObject в области над другим GameObject
У меня есть игровой объект (по существу дорога), как показано ниже (DirtTrack1):
У меня есть Spawner, который порождает GameObjects (транспортные средства). Я хочу, чтобы эти машины двигались по этой дороге.
Я пробовал следующий код для этого, по сути, пытаясь вызвать транспортное средство в пределах оси Y по дороге, получив нижнюю координату Y дороги и верхнюю координату Y, поэтому я получить минимальные и максимальные вертикальные позиции, где я могу поместить транспортное средство:
void FixedUpdate() {
// Repeat spawning after the period spawn
// route has finished.
if (!_inSpawningIteration)
StartCoroutine (SpawnVehiclePeriodically());
}
IEnumerator SpawnVehiclePeriodically()
{
// First, get the height of the vehicle and road.
float vehicleHeightHalf = vehiclePreFab.GetComponent<SpriteRenderer>().bounds.size.y/2f;
float roadHeightHalf = roadObject.GetComponent<SpriteRenderer>().bounds.size.y/2f;
float roadTopY = roadObject.transform.position.y + roadHeightHalf;
float roadBottomY = roadObject.transform.position.y - roadHeightHalf;
// Next, ensure that maxY is within bounds of this farm vehicle.
roadMaxY = roadTopY - vehicleHeightHalf;
roadMinY = roadBottomY + vehicleHeightHalf;
// Set the position and spawn.
Vector3 newPosition = new Vector3 (Const_RoadItemsPositionX, randomY, 0f);
GameObject vehicle = (GameObject)GameObject.Instantiate (vehiclePreFab, newPosition, Quaternion.identity);
}
Это нерест случайным образом, но в большинстве случаев это всегда не в самой дороге. Это либо часть дороги, либо ее внешний край.
Я не могу понять, что я делаю неправильно здесь, но я уверен, что это что-то очень простое!
float roadY = roadObject.transform.localPosition.y; не должно быть roadObject.transform.position.y? –
Это, похоже, не имело большого значения. Мой автомобиль все еще поднимается на край границы. См. Здесь ... http: //imgur.com/a/GEX6S – AshesToAshes
Вы имеете в виду координату X? потому что это контролируется константой Const_RoadItemsPositionX –