Приветствую, как реализовать спавнер, что бы он спавнил объекты в заданной пощаде?
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
Ну наверное тебе нужно как раз отталкиваться от позиции объекта во всех координатах. То есть по 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"
Есть 2d персонаж с коллайдером и Rigidbody2dТакже у него есть две анимации: покоя и ходьбы