Массовое создание объектов 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 |
старожил
Сейчас нет на сайте
| я хотел помочь, но
не могу на это смотреть пусть кто-нибудь другой
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 |
частый гость
Сейчас нет на сайте
| Нз.Удачи в создании игры =)
|
|
| |