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,

Глядя на вашу сцену, на вашей дороге есть родительский объект, и относительная позиция, которую вы получаете, может не совпадать с позицией появления автомобилей.

Другие вопросы по тегам