Пятница, 29 Марта 2024, 15:52

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Массовое создание объектов C#
Массовое создание объектов C#
loozsec7Дата: Понедельник, 22 Января 2018, 17:54 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет. Разрабатываю 2D игрушку. Собственно, проблема в следующем: в своей игрушке, у меня есть функция update. В update проверяется, не вышел ли объект за предел какого-то объекта, если вышел, то обращается к функции другого скрипта, а та функция инициализирует новый объект. Трансформ объекта выбирается рандомно из 4. Но иногда в одном месте создается сразу два объекта, что очень не красиво. Инициализирую следующим образом
Код
GameObject[] fishs = GameObject.FindGameObjectsWithTag("fish");           
            GameObject[] nofishs = GameObject.FindGameObjectsWithTag("nofish");
            foreach (GameObject fishN in fishs) if (fish != null) Destroy(fishN); //Перебираем все рыбы. Если число рыб меньше 5, то начинаем функцию создания новых рыб
            float fishslenght = fishs.Length + nofishs.Length;
            if (fishslenght < 5f)
{
randomTrans = Random.Range(0, 3);
            fish = Instantiate(fishPrefab, FishTransforms[randomTrans].transform.position, Quaternion.identity) as GameObject;
}
                score += 70 * fishs.Length;                  // Получаем очки, приумножая уловленные рыбы
            scoreText.text = score.ToString();
            canfish = 0;    //нельзя рыбачить
drcrackДата: Понедельник, 22 Января 2018, 17:59 | Сообщение # 2
старожил
Сейчас нет на сайте
я хотел помочь, но
Код
float fishslenght

не могу на это смотреть crazy пусть кто-нибудь другой

PS


Сообщение отредактировал drcrack - Понедельник, 22 Января 2018, 18:00
defGMDefeloperДата: Понедельник, 22 Января 2018, 18:01 | Сообщение # 3
частый гость
Сейчас нет на сайте
ну мб костыль ,но такой вариант
public class FishTransform{
public Transform point;
public bool isSpawnedHere=false;
}

while(true)
{
if(!FishTransforms[randomTrans].isSpawnedHere)
{
fish = Instantiate(fishPrefab, FishTransforms[randomTrans].point.position, Quaternion.identity) as GameObject;
FishTransforms[randomTrans].isSpawnedHere = true;
break;
}
}

p.S у тя 3 точки спавна и как понял 5 рыб.Если рыбы у тя не отплывают от точки спавна тогд все предельно ясно.
1.Сделать больше точек спавна
2.Делать через корутин и ждать пока рыба отплывет -потом спавнить новую


Сообщение отредактировал defGMDefeloper - Понедельник, 22 Января 2018, 18:08
loozsec7Дата: Понедельник, 22 Января 2018, 18:20 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата defGMDefeloper ()
p.S у тя 3 точки спавна и как понял 5 рыб.Если рыбы у тя не отплывают от точки спавна тогд все предельно ясно.
1.Сделать больше точек спавна
2.Делать через корутин и ждать пока рыба отплывет -потом спавнить новую

не совсем понимаю как это сделать. Можете помочь?
defGMDefeloperДата: Понедельник, 22 Января 2018, 18:29 | Сообщение # 5
частый гость
Сейчас нет на сайте
ну для начала.Рыб перебирать не обязательно.
Создал fishCount++;
Поймал или ещё че с ней стало fishCount--;
Tranform[] FishSpawnPos;//Массив с координатами рыбы
Корутин
IENumerator FishSpawn()
{
while(true)
{
yield return new WaitForSecond(1f);//Будем проверять нужна ли новая рыба раз в 1 секунду.
if(fishCount<5)
{
//создаешь рыбу
fishCount++;
}
}
}
loozsec7Дата: Понедельник, 22 Января 2018, 18:58 | Сообщение # 6
был не раз
Сейчас нет на сайте
Цитата defGMDefeloper ()
Корутин
IENumerator FishSpawn()
{
while(true)
{
yield return new WaitForSecond(1f);//Будем проверять нужна ли новая рыба раз в 1 секунду.
if(fishCount<5)
{
//создаешь рыбу
fishCount++;
}
}

а где начинать корутин? В апдейст ставить или как?
defGMDefeloperДата: Понедельник, 22 Января 2018, 19:03 | Сообщение # 7
частый гость
Сейчас нет на сайте
В Start он зацикленый
loozsec7Дата: Понедельник, 22 Января 2018, 19:23 | Сообщение # 8
был не раз
Сейчас нет на сайте
Большое спасибо! Очень помог :)
Цитата defGMDefeloper ()
Дата: Понедельник, сегодня, 18:29 | Сообщение # 5

был не раз

Сообщений: 11
Всего наград: 0
Репутация: 0  ±
Замечания: 0%
Сейчас на сайте
ну для начала.Рыб перебирать не обязательно.
Создал fishCount++;
Поймал или ещё че с ней стало fishCount--;
Tranform[] FishSpawnPos;//Массив с координатами рыбы
Корутин
IENumerator FishSpawn()
{
while(true)
{
yield return new WaitForSecond(1f);//Будем проверять нужна ли новая рыба раз в 1 секунду.
if(fishCount<5)
{
//создаешь рыбу
fishCount++;
}
}
}
defGMDefeloperДата: Понедельник, 22 Января 2018, 19:26 | Сообщение # 9
частый гость
Сейчас нет на сайте
Нз.Удачи в создании игры =)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Массовое создание объектов C#
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг