Уже и не вспомнить ту самую "первую", в которую я поиграл, но уверен - мне понравилось. Имев в арсенале и Денди с Super Contra 2, и ПК с Microsoft Flight Simulator, а позже первая PlayStation с Vigilante V8 и кучей многих других разнообразных игр. Интересовала не графика, как можно понять из перечисленного, а механика и геймплей. Немногое-то и поменялось на сегодняшний день. Интересные реализации идей и умение построить что-то грандиозное без огромного бюджета для меня выше, как игрока, многих ААА-проектов, выпускаемых акулами игростроя. Можно рассуждать очень долго на эту тему, но текст о другом.
Я решил написать что то свое.
Выбор, как и у многих подобных мне, выпал на Unity, думаю, многие из тех, кто зашел почитать эту статью, прекрасно понимают о чем я. В ином случае, если кратко - Unity - условно-бесплатный игровой движок с богатым функционалом и большим количеством разных инструментов.
Идей было предостаточно. Тут тебе и симулятор дайвинга в различных частях света, используя реальные популярные места для погружения, и попытка создать RPG, где основной задачей будет сбор одного из трех ресурсов, за которые борется весь игровой мир. И даже арканоид с мультиплеером хотелось написать. Понимая приблизительную механику, два из трех проектов остановились, когда я сообразил, что если какие то непонятные вещи по части программирования я могу и погуглить, а вот рисовать графику, как и рисовать в принципе не умею и не смогу, ввиду некоторой криворукости в этом плане. Третью же задумку - арканоид - просто не начал делать и вот почему: я придумал, что я смогу и напрограммировать и, наверное, нарисовать.
Концепт из детства
В бородатые времена кнопочных телефонов мне в руки попал Sony Ericsson W810i, с примечательной Johnny Crash: Does Texas. В игре персонаж-снаряд должен вылететь из пушки и пролететь как можно дальше, собирая различные бонусы. Очень любил эту игру, особенно бить рекорды. Так и родилась идея - попробовать перенести концепцию на современный лад, ибо поиски в Google Play игры из детства толком ни к чему не привели.
Есть движок, есть идея, есть даже образец реализации. Чем не первый проект для разработчика? Тем более, я хотел начать свой путь разработчика именно с мобильного приложения.
План разработки
Два основных элемента: игрок и пушка. С них было решено начать. Скачав бесплатный пакет (Asset), с поместил что-то похожее на пушку и что-то похожее на персонажа так, как я это видел, и прилепил фон:
На два основных элемента требовалось написать и прилепить два основных скрипта. Язык C# оказался очень комфортным и результат не заставил себя долго ждать. Пушка должна крутиться. Следовательно, задаем пушке скорость и направление:
float angle = transform.eulerAngles.z;
if (angle > 180f)
angle -= 360f;
if ((angle > 0) || (angle < -35))
direction *= -1f;
transform.Rotate(0, 0, speed * direction * Time.deltaTime);
К сожалению, здесь нет удобных инструментов для предоставления кода, поэтому будем работать с тем, что есть.
Пушка начала себя вести так, как я и хотел, хотя не сразу. До этого куска кода я пробовал встроенные инструменты Unity, например Hinge Joint 2D. Либо плохо пытался, либо инструмент и правда не подходит. После решения этой проблемы, я занялся персонажем. Стоит догадаться, что вместе с пушкой должен двигаться и сам персонаж. Далеко не пошел - поместил GameObject персонажа дочерним к пушке. Идея в том, что пушка циклично совершает движение, персонаж вместе с ней, а после нажатия на экран, персонаж теряет родительский объект и начинает движение. Следующая строчка описывает действия над объектом после нажатия на экран:
rb.AddForce(new Vector2(0, angle / 100), ForceMode2D.Impulse);
Тут надо разобраться с некоторыми вещами:
rb - компонент Rigidbody2D, который висит на GameObject`e персонажа;
AddForce - метод для этого самого Rigidbody2D. Нужен для приложения силы к объекту. Принимает в себя значения направления и импульс;
Остальное, думаю, большинству знакомо.
Ну и далее убираем родителя и в общем-то готовая игра. Почти.
Это конец первой части моего рассказа. Впереди есть адовые повествования про игровой Background, графику и Google Play Games Services. Подпишись, чтобы показать свой интерес, задай свой вопрос или поделись мыслями в комментариях.