Spawn в определённой области

179
29 августа 2017, 09:35

Приветствую, как реализовать спавнер, что бы он спавнил объекты в заданной пощаде?

public float Repeat;
public GameObject Enemy1;
public GameObject Terrain;
float width, lenth;
public  int spwn;
private void Start()
{
    width =Terrain.transform.localScale.x;
    lenth =Terrain.transform.localScale.z;
    InvokeRepeating("Spawn",0,Repeat);
}
void Spawn()
{
    for (int i = 0; i < spwn; i++)
    {
        float x = Random.Range(0, width);
        Debug.Log(x);
        float z = Random.Range(0, lenth);
        Debug.Log(z);
        Vector3 pos = new Vector3(x, transform.position.y, z);
        Instantiate(Enemy1, pos, Quaternion.identity);
    }
}

Использую вот такой вот код, но спавнит он именно в координатах 0-40, никак не перед объектом.

http://imgur.com/a/5wqY9

Answer 1

Ну наверное тебе нужно как раз отталкиваться от позиции объекта во всех координатах. То есть по x и z тоже. Примерно как-то так:

float x = Random.Range(-width / 2, width / 2);
float z = Random.Range(-lenth / 2, lenth / 2);
var pos =  transform.position;
var position = Vector3(pos.x + x, pos.y, pos.z + z);
Instantiate(Enemy1, pos, Quaternion.identity);

Длина, кстати, будет "length"

READ ALSO
Правильное проигрывание анимации

Правильное проигрывание анимации

Есть 2d персонаж с коллайдером и Rigidbody2dТакже у него есть две анимации: покоя и ходьбы

237
Ошибка отправки на почту smtp.yandex.com

Ошибка отправки на почту smtp.yandex.com

Добрый вечер - какое может быть решение ошибки?

290
Округлить целое число до десятков

Округлить целое число до десятков

Допустим есть число

216