Привет! В этом видео мы продолжаем создавать игру. Сегодня мы создадим генерацию объектов, а также их последующее удаление #unity #программирование #gamedev
Блин, смотрю урок, И понимаю, что у меня объекты не удаляются, сделал все правильно, тег есть, код такой же, как и у тебя, абсолютно, но все равно что-то не работает, не могу понять, голову ломаю, помоги пж
Привет, видео, конечно, хорошее, но в нём есть одно но, ты практически ничего не объясняешь, что делаешь. Рассказал бы, для чего нужны все эти функции и объекты, что они делают. Ни единого объяснения как что работает
@@victorymirosya4937 я знаю основы ооп, немного знаком с с#... Автор не объясняет, для чего нужна функция илр какой нибудь метод, какие параметры принимает эта функция и что возвращает, не понял что это за переменные структуры или объекта. А еще был вопрос зачем нужен boxcolider и rigitbody... Автор из выше перечисленного ничего не объясняет.
Блииин я сам догадался как сделать так чтобы они уничтожались хотя по другой пути и не задействуя спрайт но все же спс тебе за видео я научился хоть к чему то
Очень странная реализация на 8:00. почему нельзя было вызывать метод StartCoroutine(Spawn()); в методе Update(), разве в реализации как на видео не произойдет переполнение стека вызовов из-за своеобразной рекурсии?
@@dodo3884 я посмотрел, по сути так можно сделать, но лучше конечно как на видео привязать тайминги к yield return new WaitForSeconds(); Потому что тайминги FixedUpdate меняются напрямую в Юнити и измеряются в тиках в секунду. То есть можно задать Time.fixedDeltaTime = 1f/1 - это 1 тик в секунду, но это извращение сумасшедшее..
Привет, прописал скрипт так же как у тебя, но при добавлении его на 3Д модель в самом юнити нет SpawnPos; Range; Enemy; в чем проблема не пойму? МОжет кто подсказать?
Если летят в ряд, то проблема в генерации координат. Попробуй заново всë сделать. И в префабе препятствия посмотри, чтобы координата по Z была 0, скорее всего в этом дело
Переменная типа Transform принимает в качестве значения только данные типа Vector3 ибо имеет 3 координатные оси и изменяя даже 2 из них - мы должны указать нулевое значение для 3й
@@НадеждаШаповалова-м5й для начало не плохо бы тебе C# основы выучить. для этого посмотри уроки от SimpleCode. по нему учился я ну и еще мб знаешь Макстера он тоже у него учился
Помоги, прошу тебя. Короче когда сделал объкт который должен очищать эти препятствия, то когда просто продолжаю проект всё работает, когда сохраняю и заново компилирую проект, то этот объект который должен очищать препятствия пропадает, не знаю что делать.
Ахаахх, значит ты неправильно прописал функцию Destroy и в итоге обтект уничтожает сам себя когда игра запускается, или дело в Онтригер ентере где он получает значения коллайдера самого обьекта а не врага
Так, привет други подскажите товарищи программисты где я допустил ошибку в каком из видосов что у меня значит сам Generator если перетащить на Бублик он по верх него, а вот Enemy-Prefab пролетают позади Бублика 🤔 В чем баг? Спс заранее!
Нужно Sorting Layer создать и выставить правильно. Я так понял, без них никуда, сначала вроде нормально всё работает, но потом начинаются проблемы со слоями.
И снова ошибка... Всё перепроверил, пересохранил... Акогда закидываю он не отвечает. Просто написано Spawner (script) и больше ничего не активно... ХЕЛП
ну лично я делал таймер и по таймеру вызывал метод Instantiate если не знаеш как сделать просто загугли там написано, но через Нумераторы я хз как делать
Если у кого-то спавниться только один раз, то уберите в строчке void start слово private, оно у меня ставилось автоматически, убрал и стало спавниться как на видео Спавнит один раз private void Start() { StartCoroutine(Spawm()); } Должно быть так, спавнит много раз void Start() { StartCoroutine(Spawm()); }
У меня почему-то обьекты спавняться только по У, хотя в скрипте стоит Х, и в настройках тоже. Спавн работает только по У независимо от введённых координат, спавн по Х всегда на 0. Спавнится так: = = = А не так: = = = = public class Spawner : MonoBehaviour { public Transform spawnPos; [SerializeField] Vector2 spawnRange; [SerializeField] GameObject spawnObj; // Start is called before the first frame update void Start() { StartCoroutine(Spawn()); } void Repeat() { StartCoroutine(Spawn()); } IEnumerator Spawn() { yield return new WaitForSeconds(3f);//time between spawns Vector2 pos = spawnPos.position + new Vector3(0,Random.Range(-spawnRange.x, spawnRange.x )); Instantiate(spawnObj, pos, Quaternion.identity); Repeat(); } }
В строке Vector2 pos = spawnPos.position... Нужно строку Random.Range(-spawnRange...) Написать не после нуля, а перед ним. должно быть так: Vector2 pos = spawnPos.position + new Vector3(Random.Range(-spawnRange.x, spawnRange.x),0 ) А у тебя так: Vector2 pos = spawnPos.position + new Vector3(0,Random.Range(-spawnRange.x, spawnRange.x ));
Пишет что гдето не хватает точки с заяптой...Но ведь все верно! using System.Collections; using System.Collections.Generic; using UnityEngine; public class Destroyer : MonoBehaviour { void OnTriggerEnter2D(Collider2D other) { If (other.gameObject.tag == "Enemy") { Destroy(other.gameObject); } } }
Дело в том что в спавне врагов и бонусов ты используеш одинаковую рандомную кординату, чтобы избавится от этой проблемы создай ещё одну переменную range только уже для бонусов и в инстантиейте бонусов указывай её,,,