Unity2D C# случайным образом порождает GameObject в области поверх другого GameObject
Я новичок в Unity2D (Unity 5.0.2f1) и искал решение, которое, я уверен, смотрит мне в глаза!
У меня есть игровой объект (по сути, дорога), как показано ниже (DirtTrack1):
У меня есть спавнер, который порождает 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);
}
Это происходит случайно, но в большинстве случаев это не всегда в пределах дороги. Это либо часть дороги, либо ее внешний край.
Я не могу понять, что я делаю здесь неправильно, но я уверен, что это что-то очень простое!
2 ответа
Отметьте кинематическую проверку вашего транспортного средства, если вы этого не сделаете, физика может убрать его с дороги.
Ты используешь localPosition
, Из документации:
Положение преобразования относительно родительского преобразования.
Если у преобразования нет родителя, оно совпадает с
Transform.position
,
Глядя на вашу сцену, на вашей дороге есть родительский объект, и относительная позиция, которую вы получаете, может не совпадать с позицией появления автомобилей.