TGViewer
Moth Moth @namlessmoth · 44 subscribers
Post #251 58
Moth Сделал двенадцатое задание. Если вкратце - там нужно было исправить плохой ход и сделать его хорошим. Могу официально заявить, что это пока что самое интересное задание из всего курса и в модуле С# очень не хватало подобных заданий. Моё первое решение: ht…
Всем привет!
Ответ ментора получился очень большой. В основном ошибки из-за того что я не правильно понял логику кода. Я думал что пуля вылетает и рикошетит между мишенями по кругу. А оказалось что это игрок движется по маршруту из точек по кругу и стреляет по мишеням.
Вот сам ответ:
Добрый день. Нет, не самое, дальше интереснее) Но пока надо доработать это:

1) Вы скрестили несовместимое. Первый скрипт не имеет отношения к пуле. Он описывает движение по маршруту, не более. Вам нужно произвести легкий рефакторинг по стилю, а не менять логику скриптов.
2) Тем более, логика апдейта и метода движения будут противоречить друг другу.
3) _targetField - имя не отражает суть. Это путь или контейнер точек пути.
4) targets[i] = targetField.GetChild(i).GetComponent<Transform>(); - Зачем тут GetComponent? Посмотрите, что возвращает GetChild.
5) Помимо упорядочивания методов по доступности, в юнити вводится дополнительное ограничение. Методы событий юнити всегда пишутся выше своих, даже если доступность их ниже. Так же методы событий юнити лучше писать в порядке их вызова основным потоком. Тоесть первым Awake. Исключение, что OnEnable, OnDisable можно рядом писать, то все ровно не раньше чем вызывается в очереди OnEnable. Подробнее
https://docs.unity3d.com/ru/530/Manual/ExecutionOrder.html
6) Логику GetNextTarget можно заменить парой строк, если записывать в переменную индекса остаток от деления (%) ее "текущего значение + 1" (только через инкремент, чтоб избежать магических чисел) на "длину массива". Тогда вы замкнете значение между 0 и максимальным индексом.
7) Текущий индекс лучше в поле хранить, чем постоянно искать. Это затратно по ресурсам, особенно на больших массивах.
8) [RequireComponent(typeof(Rigidbody))] не имеет смысла, тк мы не делаем тут GetComponent.

Переписанный вариант: https://gist.github.com/NoNameDeleted/6274460596bf41ae35c0b3a1051390db/d7e27db82f3baa0e8c30b4f7f579114da4ce8056
Каждый пункт прокомментирую в следующем посте, а то тут не поместится.
  • ❤ 1
  • 👏 1
More from @namlessmoth
  1. Mar 7, 2026Как сломать босса одним прокачанным навыком Причём первую заратану я победил точно так же,…
  2. Mar 3, 2026Наиграл уже 150+ часов и даже не прошел половину игры Мне капец как не везёт почти в каждо…
  3. Feb 17, 2026Один месяц подписки на впн Вдруг кому надо https://t.me/gruVPNbot?start=g_UZhunlWNfFC_2127…
  4. Feb 16, 2026оставлю тут, чтобы не потерять вам смотреть нельзя, это только для меня
  5. Feb 13, 2026Вчера сделал всего три задания и все три оказались не правильными 1) Задание: Проведите ре…
  6. Feb 12, 2026Оказалось что всё-таки можно сдавать несколько заданий за один раз. Я вчера сдал 7 заданий…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →