Media is too big
VIEW IN TELEGRAM
Боты-сборщики
2 дня выполнял это задание, сейчас отправил на проверку.
Впервые потрогал NavMesh. Непривычно, но как-будто бы удобно.
Теперь эти старашки бегают по сцене, собирают алмазики. Кайф )
2 дня выполнял это задание, сейчас отправил на проверку.
Впервые потрогал NavMesh. Непривычно, но как-будто бы удобно.
Теперь эти старашки бегают по сцене, собирают алмазики. Кайф )
👍2🔥2
Всем привет! Очередная тема типаджема - "Шутер". Концепцию игры пока не буду раскрывать, зато могу рассказать, что сегодня сделал.
А сделал я управление игроком на джойстиках для мобилок и клавиатуре для ПК.
Сразу же раскидываю всё по классам, чтобы каждый отвечал за свою логику. Мне думается, что я стал уделять больше внимания структуре и выбрал подходящий для себя кодстайл. Теперь, когда смотрю очередной урок из ютуба, то не бездумно переписываю, а делаю код более читаемым и оптимизированным. Раньше это казалось бессмысленным увеличением количества классов, а сейчас понимаю, что так они менее связаны, лучше видно косяки и проще точечно вносить изменения, не ломая остальные механики.
Считаю, что практика приносит свои результаты, а учёба помогает разложить инфу по полочкам.
Я по-прежнему кайфую от кодинга. Надеюсь, и вы не забросили разработку
А сделал я управление игроком на джойстиках для мобилок и клавиатуре для ПК.
Сразу же раскидываю всё по классам, чтобы каждый отвечал за свою логику. Мне думается, что я стал уделять больше внимания структуре и выбрал подходящий для себя кодстайл. Теперь, когда смотрю очередной урок из ютуба, то не бездумно переписываю, а делаю код более читаемым и оптимизированным. Раньше это казалось бессмысленным увеличением количества классов, а сейчас понимаю, что так они менее связаны, лучше видно косяки и проще точечно вносить изменения, не ломая остальные механики.
Считаю, что практика приносит свои результаты, а учёба помогает разложить инфу по полочкам.
Я по-прежнему кайфую от кодинга. Надеюсь, и вы не забросили разработку
👍3
Короче, шутер у нас - плагиат CounterStrike 1.6. Правда, это будет не совсем обычная стрелялка, но пока подробности в секрете.
Управление на телефоне - дико неудобное, но вдруг найдутся и такие мазохисты )
На видео то, что сделано за 2 дня. Карту вот только что в тырнете откопал, лишил хлеба наших 3д-шников в команде ))
Управление на телефоне - дико неудобное, но вдруг найдутся и такие мазохисты )
На видео то, что сделано за 2 дня. Карту вот только что в тырнете откопал, лишил хлеба наших 3д-шников в команде ))
👍3
С одной стороны так круто, что в VS есть автозавершение кода. С другой же, он почти половину дописывает и я не особо запоминаю. Кажется, если отключить эту функцию, то выяснится, что я толком ничего и не знаю.
🌚2
Я вот думаю, продолжить сейчас кодить или хапнуть малость выгорания 😁
В момент, когда сталкиваешься со сложной, хоть и решаемой задачей, мозг сознательно откладывает её, лишь бы не напрягаться. И вот сейчас поймал себя на мысли, а не покемарить ли мне пару часиков. Началась внутренняя борьба, которая пока ещё неизвестно чем закончится. Как вы боритесь с выгоранием?
В момент, когда сталкиваешься со сложной, хоть и решаемой задачей, мозг сознательно откладывает её, лишь бы не напрягаться. И вот сейчас поймал себя на мысли, а не покемарить ли мне пару часиков. Началась внутренняя борьба, которая пока ещё неизвестно чем закончится. Как вы боритесь с выгоранием?
Ладно, давайте поштурмим.
Есть бот, который куда-то движется. Есть анимация его движения. Бот может идти спиной и боком. Важный момент, надо запустить правильную анимацию ходьбы, точнее, настроено смешивание анимаций по направлениям. Если передавать в аниматор параметры, которые передаются в мовер, то всё будет чики-пуки, но до первой стены, т.к. коллайдер (точнее, CharacterController) его не пустит дальше. Но анимация продолжит работать.
Можно просто проверять, не врезался ли бот в стену, но он может врезаться спиной, боком, наглой рожей, так что луч пускать не вариант или кидать его по направлению движения?? Но тогда, если на бота будут действовать прочие силы, пока неведомо какие, то его направление ходьбы мало чем поможет. Можно попробовать детектить столкновения коллайдера с чем-нибудь и как-нибудь получать точку касания, высчитывать, что если идёшь туда, то анимации не должно быть. Шляпа же, да?
Поэтому я решил высчитывать пройденной расстояние за кадр - типа дельты позиции, затем делить на произведение скорости и Time.deltaTime. Но если скорость будет нулевая, это приведёт к ошибке, поэтому надо делать проверку.
Сейчас мой код работает, но нет уверенности, что он делает это корректно. Надо пораскинуть мозгами, затем собрать их в кучу и разобраться с этой математикой. А вы бы как решили такую задачку?
Есть бот, который куда-то движется. Есть анимация его движения. Бот может идти спиной и боком. Важный момент, надо запустить правильную анимацию ходьбы, точнее, настроено смешивание анимаций по направлениям. Если передавать в аниматор параметры, которые передаются в мовер, то всё будет чики-пуки, но до первой стены, т.к. коллайдер (точнее, CharacterController) его не пустит дальше. Но анимация продолжит работать.
Можно просто проверять, не врезался ли бот в стену, но он может врезаться спиной, боком, наглой рожей, так что луч пускать не вариант или кидать его по направлению движения?? Но тогда, если на бота будут действовать прочие силы, пока неведомо какие, то его направление ходьбы мало чем поможет. Можно попробовать детектить столкновения коллайдера с чем-нибудь и как-нибудь получать точку касания, высчитывать, что если идёшь туда, то анимации не должно быть. Шляпа же, да?
Поэтому я решил высчитывать пройденной расстояние за кадр - типа дельты позиции, затем делить на произведение скорости и Time.deltaTime. Но если скорость будет нулевая, это приведёт к ошибке, поэтому надо делать проверку.
Сейчас мой код работает, но нет уверенности, что он делает это корректно. Надо пораскинуть мозгами, затем собрать их в кучу и разобраться с этой математикой. А вы бы как решили такую задачку?
👍1
Media is too big
VIEW IN TELEGRAM
Когда забыл отключить видимость башки ) От создателей "Я твой рот смотрел" и "Вай, какие глаза" 😅
😁2👍1
Media is too big
VIEW IN TELEGRAM
Ура! Со смешиванием анимации более-менее разобрался. Звук в игре не отстаёт от картинки, это косяк при записи. Интерфейс меню полностью готов, сохранения работают. Бот бегает, ходит, крадётся, озирается, смотрит вперёд и по сторонам. Теперь буду писать собственную систему поиска пути, т.к. Nav Mesh не прокатит для выполнения условий доп. темы: "Гравитационные аномалии". Надо ещё много чего сделать, а осталось 2 недели до предоставления итогового билда. Надеюсь, хоть частично успеем доделать.
Всем привет! Т.к. у нас шутер с водяными пистолетами, партиклы струи воды должны дамажить игроков. И если с коллизиями все ок, то получать взаимодействие партиклов с триггерами оказалось излишне замороченно. Так что на игроках будут колладеры, а не триггеры. Только вот если несколько коллайдеров, которые между собой по слоям не взаимодействуют, но пересекается, всё равно будут грузить систему. Пока думаю на это забить, так как лучше неоптимизированная, но уже играбельная игра, чем оптимизированный кусок игры, в который всё ещё нельзя поиграть.
Вчера прилично успел сделать. Сегодня времени на разработку будет не так много.
Вчера прилично успел сделать. Сегодня времени на разработку будет не так много.
Media is too big
VIEW IN TELEGRAM
А вообще это баг, который фича, т.к. тема - гравитационные аномалии 😅
Но я всё же его пофиксил )
Но я всё же его пофиксил )
Какому проектированию (условно) вы отдаёте набольшее предпочтение?
Anonymous Poll
14%
Наследование
29%
Абстракция
29%
Композиция
0%
Агрегация
14%
Интерфейсы
0%
Полиморфизм
0%
Декорация
0%
Зависимость
5%
Составные объекты
10%
А это точно на русском?
Сутки промучался над простой задачей: бросать рейкаст вперёд, получать массив пересечений, а затем исключить ненужные и взять первый подходящий. Ничего не получалось, как я только ни пытался. Я и слои настраивал, и маски менял, но луч отказывался детектить ботов.
И что бы вы подумали? Оказывается, массив надо отсортировать по расстоянию. Очень неочивидный факт.
И что бы вы подумали? Оказывается, массив надо отсортировать по расстоянию. Очень неочивидный факт.
Не мог понять, почему при спавне стартовые позиции ботов и игрока иногда сбоят. Оказалось, CharacterController не парится и не проверяет, в каком месте персонаж. Он перехватывает инфу в кадре и затирает на своё усмотрение. Решение: отключить контроллер, сменить положение, включить контроллер 😉
Вариант 1:
Вариант 2:
Ниже публикну опрос. Интересно, какой вариант записи предпочли бы вы. Буду благодарен, если ещё и напишете почему 🙂
private void UpdateLayoutComponents()
{
if (_verticalLayoutGroup != null)
{
LayoutRebuilder.ForceRebuildLayoutImmediate(_layout.content);
Canvas.ForceUpdateCanvases();
_verticalLayoutGroup.CalculateLayoutInputVertical();
_verticalLayoutGroup.SetLayoutVertical();
}
}
Вариант 2:
private void UpdateLayoutComponents()
{
if (_verticalLayoutGroup == null)
return;
LayoutRebuilder.ForceRebuildLayoutImmediate(_layout.content);
Canvas.ForceUpdateCanvases();
_verticalLayoutGroup.CalculateLayoutInputVertical();
_verticalLayoutGroup.SetLayoutVertical();
}
Ниже публикну опрос. Интересно, какой вариант записи предпочли бы вы. Буду благодарен, если ещё и напишете почему 🙂
TyapLyapDev - Разработка игр | Движуха Сакутина
Какая запись приятнее и читабельнее?
Вижу, что большинство (61%), как и я, за второй вариант. На самом деле это просто вопрос удобства. Мне, например, не нравятся ступеньки (этажи) из фигурных скобок. Второй момент, сразу ясно, что если условие не выполнено, то дальше логики нет. А если она нужна, то надо просто подробить метод на более мелкие составляющие. Тогда будет так же простой выход при невыполнении условия. Понятно, что каждый выбирает стиль под себя, но раз большинство выбрало так же, как и я, наверно это действительно удобнее