Спаунеры

Общие вопросы о Unity3D

Спаунеры

Сообщение liver9711 15 мар 2012, 11:24

Как Instantiate-тить обьект в случайной точке спауна, если их там 140 штук и все с одним и тем же именем?
liver9711
UNITрон
 
Сообщения: 285
Зарегистрирован: 14 мар 2012, 11:16

Re: Спаунеры

Сообщение Левш@ 15 мар 2012, 13:17

Запихнуть обьекты в массив и рандомить индекс массива с рандомными координатами.
Примерно так:
Синтаксис:
Используется javascript
var spawnObjects : GameObject[]; // массив обьектов
var radiusInstansObj : int = 250; // радиус сферы координат случайных позиций
private var instPos : Vector3;
private var index : int = 0;
private var spawnLimit : int = 0;

function Update () {
      if (spawnLimit  <  spawnObjects[].Length)  {
            spawnLimit ++;
            index = Random.Range(0, spawnObjects[].Length)
            instPos = Random.insideUnitSphere * radiusInstansObj;
            Instantiate(spawnObjects[index], instPos, Quaternion.identity);
       }
}
 

Можно запихнуть все обьекты в массив и в коде, отыскивая их по имени и перебирая массив, но это другая тема. ;)
А так 1 раз придеться все ручками вбить. Это будет уроком к тому что не стоит 140 обьектов обзывать одинаково. (popcorn1)
Последний раз редактировалось Левш@ 15 мар 2012, 14:08, всего редактировалось 5 раз(а).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Спаунеры

Сообщение liver9711 15 мар 2012, 13:20

Их 140 штук!!! Альтернативного способа нет?
liver9711
UNITрон
 
Сообщения: 285
Зарегистрирован: 14 мар 2012, 11:16

Re: Спаунеры

Сообщение Vip_and_Rip 16 мар 2012, 10:49

Что-бы не плодить новые темы, спрошу тут:
А можно создать спавнер, при котором бы игрок "рождался" в случайном месте при загрузке игры?
Аватара пользователя
Vip_and_Rip
UNIт
 
Сообщения: 67
Зарегистрирован: 14 мар 2012, 17:51
Откуда: Алгол, Евразийская Конфедерация, Демократическая Республика Россия
  • ICQ

Re: Спаунеры

Сообщение liver9711 16 мар 2012, 10:51

Там както подругому делалось, при помощи GameObject.Find и length. А при помощи массива я и сам смогу.
liver9711
UNITрон
 
Сообщения: 285
Зарегистрирован: 14 мар 2012, 11:16

Re: Спаунеры

Сообщение liver9711 16 мар 2012, 11:05

Vip_and_Rip писал(а):Что-бы не плодить новые темы, спрошу тут:
А можно создать спавнер, при котором бы игрок "рождался" в случайном месте при загрузке игры?

Да. Запросто.
[syntax=]
var player : Transform;
function Start()
{
var x = Random.Range(от, до);
var y = Random.Range(от, до);
var z = Random.Range(от, до);
transform.position = Vector3(x,y,z);
var hit = RaycastHit
if(Physics.Raycast(player.position, player.transform.down, hit, 2000.0))
{
player.transform.position.y = hit.transform.position.y + половина высоты игрока как float;
}
else
{
Start();
}
}
[/syntax]
Это если у тебя вся карта открыта, тоесть без потолков.
liver9711
UNITрон
 
Сообщения: 285
Зарегистрирован: 14 мар 2012, 11:16

Re: Спаунеры

Сообщение Vip_and_Rip 16 мар 2012, 11:08

liver9711 писал(а):
Vip_and_Rip писал(а):Что-бы не плодить новые темы, спрошу тут:
А можно создать спавнер, при котором бы игрок "рождался" в случайном месте при загрузке игры?

Да. Запросто.
[syntax=]
var player : Transform;
function Start()
{
var x = Random.Range(от, до);
var y = Random.Range(от, до);
var z = Random.Range(от, до);
transform.position = Vector3(x,y,z);
var hit = RaycastHit
if(Physics.Raycast(player.position, player.transform.down, hit, 2000.0))
{
player.transform.position.y = hit.transform.position.y + половина высоты игрока как float;
}
else
{
Start();
}
}
[/syntax]
Это если у тебя вся карта открыта, тоесть без потолков.


Спасибо, попробую. [V] А то для хоррор-арены статичность не самый лучший выход...
Аватара пользователя
Vip_and_Rip
UNIт
 
Сообщения: 67
Зарегистрирован: 14 мар 2012, 17:51
Откуда: Алгол, Евразийская Конфедерация, Демократическая Республика Россия
  • ICQ

Re: Спаунеры

Сообщение seaman 16 мар 2012, 11:46

Рекурсия с возможностью бесконечного цикла - это круто.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Спаунеры

Сообщение Левш@ 16 мар 2012, 12:52

Там както подругому делалось, при помощи GameObject.Find и length. А при помощи массива я и сам смогу.

О чем я вчера и писал по поводу помогать *брату игроделу* или нет... (полная Ж)

var x = Random.Range(от, до);
var y = Random.Range(от, до);
var z = Random.Range(от, до);
transform.position = Vector3(x,y,z);

Синтаксис:
Используется javascript
instPos = Random.insideUnitSphere * radiusInstansObj;

:)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 9