sambahopkins

sambahopkins

На Пикабу
поставил 47 плюсов и 1 минус
Награды:
5 лет на Пикабу
408 рейтинг 12 подписчиков 5 подписок 12 постов 4 в горячем

Делаем Тунца - пять!

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Начало: http://pikabu.ru/story/nu_kogda_zhe_myi_uzhe_dodelaem_tuntsa...

Ну что же, продолжим. Сегодня мы будем делать анимашки. Это очень-очень просто (потому что в этой игре анимация очень простая).

Итак, для начала нам нужно нарисовать все кадры для анимации тюленя и импортировать эти кадры в наш проект.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

И тунец у нас тоже будет анимирован.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

И более того, другие персонажи тоже будут анимированы, а еще мы создадим сегодня друга нашему тюленю - дельфина. И у него тоже масса спрайтов, потому как он будет плыть, помахивая хвостиком, а при встрече с тюленем - весело переворачиваться. Так они будут играть, за что будут начисляться очки и увеличиваться жизнь у тюленя.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Ну вот наимпортировали достаточно. Теперь будем собственно делать анимацию. Создать анимашку можно, например, так: берем спрайты, которые будут в ней использоваться и бросаем их на анимируемый объект в сцене.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Затем переходим во вкладку Animation, выбрав наш объект и видим, что у него уже есть анимация и она имеет имя такое, какое мы дали ей при создании, когда кинули кучу спрайтов в объект.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Однако, надо добавить кадров, чтобы тюлень у нас изгибался вверх и вниз при движении. Ставим новый кадр, меняем значение Sprite в Sprite Renderer - всё очень просто.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Теперь, когда кадров достаточно, перейдем во вкладку Animator. Мы видим, что наша единственная анимация стала анимацией по умолчанию. То есть если сейчас мы запустим игру, то тюлень будет плыть, двигаясь одинаково, вне зависимости от того, просто он плывет, ныряет, ест или повстречал врагов, например.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Вернемся в Animation и создадим еще одну анимацию. Назовем ее seal_dive, потому как это будет анимация погружения.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Добавим один единственный параметр - Sprite из Sprite Renderer.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

И добавим все спрайты, которые мы нарисовали для погружения.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Снова идем в Animator и создаем триггер.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Жмем правой кнопкой на Any State, выбираем единственный пункт Make Transition и в полученном Transition в Conditions добавляем наш триггер, который мы назвали, конечно же, dive.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Ну и сделаем еще одну Transition, из tuna_dive в tuna_swim.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Вполне наглядно выглядит. А теперь пора открыть скрипт, управляющий тюленем - SealController. Добавляем provate переменную anim, в методе Awake() устанавливаем ей значение, а в Jump с ее помощью дергаем наш триггер dive.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Повторим всё то же самое для создания анимации seal_eat. Только триггер назовем уже, соответственно, eat.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

А в скрипте добавим срабатывание этого триггера, когда тюлень встречает еду.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

И снова все то же самое для seal_hurt.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

В скрипте мы дергаем этот триггер, когда встречаем Animal - этот тег сейчас у медузы и он будет у всех врагов и друзей.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Создадим анимации для тунца и медузы, на сей раз не перетаскивая спрайтов на объект, а нажав во вкладке Animation кнопку Create. Тунец - парень простой, у него будет только один state и никаких триггеров.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

И медузе создадим анимацию, но уже не одну, а парочку, помимо swim, у нее будет еще и play. И, соответствующий триггер и Transition.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

А в скрипте добавим, чтобы при встрече с тюленем все наши враги и друзья "играли".

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Теперь создадим дельфина. Можно скопировать его с медузы, заменив спрайт, сбросив коллайдер, подняв скорость (дельфин плавает быстрее) и переименовав, можно создать заново - не важно. Помните только, что копируя, вы должны не забывать создать новому объекту отдельный Animation Controller и назначить его. Так же вам нужно будет сделать "фабрику дельфинов", как мы делали раньше "фабрику медуз", только в качестве префаба выбрать там дельфина и настроить паузы между появлениями дельфинов, они уж точно встречаются пореже медуз.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

А теперь добавим в скрипт MovingObjectController public переменные life и score. Life - это сколько жизней будет добавлять или отнимать в случае отрицательного значения столкновение с данным объктом, а Score, как не сложно догадаться - очки. У префаба дельфина выставим Life в 10, Score в 1. И очки и жизнь будут добавляться, пока тюлень "играет", то есть соприкасается с дельфином. Медузе выставим -10 в life и оставим 0 в score, а у тунца в score поставим 100 и в life 100 - тунец сразу съедается и добавляем и очков и жизни сразу.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

И добавим изменим немного в обработку событий. При столкновении с Animal мы теперь смотрим, включать ли нам hurt (если life < 0) или же добавлять очков.

Делаем Тунца - пять! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Вот и всё на сегодня. Не так уж и мало, хотя и всё просто. В следующий раз напишу о звуке.

Я пока оставляю везде, где "нужно" public переменные. Думаю, что тем, кому интересно попробовать создать подобную простую игрушку будет и интереснее и полезнее самим навести порядок в уровне доступов, решить, где будет правильно использовать поля рид-онли и т.д.

У меня на горизонте замаячила новая работа и не исключено, что грядущая неделя - последняя неделя безделья, в работу это надо будет погрузиться чуть менее, чем полностью, поэтому продолжать писать сюда я буду, скорее всего, только по выходным.

Показать полностью 24

Странные маленькие грибочки

Странные маленькие грибочки Грибы, Странности

А еще вот такие странные маленькие грибочки попались в Целау, растут на стволе поваленного дерева. Может, кто-нибудь знает, что это? Интересно так же, что это за черная "икра" ниже грибов.

Мухоморы в Целау

Несколько лет назад случился корпоративный выезд в за грибами в Целау - это такой заповедник на болоте, организованный еще немцами в начале прошлого века. Помимо огромного количества лягушек, там оказалось довольно много грибов. Однако, я в тот раз почему-то не взял ни ножа, ни корзины, лишь фотомыльницу, при помощи которой и насобирал фотографий, в том числе и мухоморов, на которые и предлагаю вам взглянуть:

Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Мухоморы в Целау Грибы, Мухомор, Калининград, Целау, Длиннопост
Показать полностью 12

Слизняк кушает грибочки

Слизняк кушает грибочки Грибы, Слизень, Обед
Слизняк кушает грибочки Грибы, Слизень, Обед

На самом деле ходили мы не за грибами, а осматривать полигон перед ролёвкой, но место оказалось довольно грибное, вот слизняк не даст соврать. :)

Показать полностью 1

(ну когда же мы уже до)Делаем Тунца - четыре

Начало - здесь: http://pikabu.ru/story/delaem_tuntsa__tri_4521249

Сегодня мы сделаем отображение жизни, очков и изменение этих величин в зависимости от того, встретит наш тюлень врагов или еду. Начнем с отображения и потом добавим изменение. Короче говоря, делаем HUD.

Для начала создадим на сцене объект типа Canvas и назовем его HUDCanvas, например:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Создадим в нем дочерний объект типа Slider:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Расположим наш слайдер, который будет отображать жизнь, в самом низу экрана, для этого у него в Transform выберем соответствующий Anchor Presets:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Посмотрим, что есть внутри нашего слайдера, что там можно настроить. Ага, есть цвет заливки, поменяем его на зелененький:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

А вот Handle Slide Area нам вообще не нужно, мы же не хотим, чтобы игрок мог добавить себе жизни простым перемещением ползунка. Так что просто удалим его. И посмотрим, что еще можно настроить в нашем Slider, а настроить можно максимальное и стартовое значение:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Так же стоит убрать крыжик Interactable, чтобы игрок действительно не мог изменять собственноручно количество жизни. И настроить цвет. Например, подкрутим альфа-канал и сделаем наш слайдер полупрозрачным, так на мой взгляд красивее. Уменьшите значение A у цветов Normal Color в Slider и Color в Slide-Fill Area-Fill до такого, чтобы вам нравился уровень прозрачности у заполненной и пустой полоски:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

А теперь что-то новенькое: создадим новый пустой объект на сцене, назовем его GameManager и добавим в него один единственный компонент - новый скрипт, который так же назовем GameManager:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Добавим в этот скрипт следующий код:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Мы используем instance вместо static-класса. В Awake() нет DontDestroyOnLoad() по той простой причине, что у нас одна сцена и она не будет перезагружаться. Если вы будете использовать много сцен и хотите, чтобы GameManager оставался единым для всех сцен - используйте DontDestroyOnLoad () в Awake() для этого

Так, а про score то мы забыли, ну не беда, вернемся к нашему HUDCanvas и добавим в него дочерний объект типа Panel:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Назовем нашу панель ScorePanel и добавим и ей дочерний объект, но уже типа Text:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Назовем его просто Score, настроим его расположение так, чтобы он был в правом верхнем углу экрана:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Чтобы наша панель не окрашивала все белым цветом, сделаем ее полностью прозрачной:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

А теперь пора добавить кое-что в наш скрипт GameManager:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Мы добавили public-переменные timeSlider и scoreText, а так же score. В методе Awake() добавили обнаружение соответствующих объектов на сцене и связали их с нашими переменными. А в Update() добавили постепенное изменение количества жизни и отображение текущего количества очков.

Теперь пришло время сделать так, чтобы тюлень реагировал на столкновение с едой - пополнял количество жизней и увеличивал счет, а так же с врагами - уменьшал количество жизней. Для этого мы пойдем в папку Prefabs, где у нас лежат заготовки для тюленя, медузы и тунца и, встав на одну из заготовок, откроем меню Tag и выберем создание нового тэга:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Создадим сразу парочку тэгов - Food и Animal:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

После этого снова идем в Prefabs и раздаем теги - тунцу Food, медузе Animal, ну и заодно дадим тюленю тэг Player, пусть будет:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Теперь пора добавить парочку методов в наш скрипт SealController, который прикреплен у нас к тунцу. Вот такие методы добавим в конце скрипта:

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

И еще, добавим-ка нашему тюленю PolygonCollider2D и выставим у него isTrigger в true. Это нужно, чтобы все тельце тунца реагировало на столкновения с другими объектами (до сих пор у нас был только Circle Collider, нужный нам для ныряния и подъема на поверхность воды):

(ну когда же мы уже до)Делаем Тунца - четыре Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Вот теперь всё будет прекрасно работать. Когда тюленю будет попадаться тунец - жизни становится больше, очков тоже, а когда медуза - жизней стремительно становится меньше. Это уже похоже на игру! Однако, наверняка вы заметите, что очки как-то не правильно отображаются, пока их 0 - всё нормально, как только их становится больше - количество их куда-то исчезает. Что же, идите в объект Text, который мы назвали Score и смотрите, что там не так с расположением или размером этого объекта, настраивайте. Нужно же хоть что-то сделать самостоятельно. :)

В этот раз мне удалось сделать перерыв не в 7, а в 6 дней! Успех? Не очень, конечно. Однако, несмотря на занятость и лень, я постараюсь сделать продолжение через 5 дней. А может и раньше, но не обещаю. Впереди у нас такие интересные задачи как: гамовер и стартовое меню, звуки и анимация. Потерпите, осталось не так уж и много.

И я по прежнему рад любой критике от тех, кто лучше меня знает Unity3D и C# - пишите, ругайте, всё мотаю на ус, мне самому эти типа-уроки будут не менее полезны, чем тем, кто просил написать, как сделать такую простенькую игру, "вот я установил юнити - с чего начать" и так далее.

Показать полностью 18

Делаем Тунца - три!

Прошла неделя и таки продолжаем. Начала здесь: http://pikabu.ru/story/delaem_tuntsa__dva_4503397

Итак, сегодня мы делаем первых врагов и пищу для нашего тюленя. Сразу создадим папку Prefabs и закинем в нее самого Тюленя со сцены, пусть лежит там тоже:

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Затем берем спрайты наших пищи и врагов - это будут медуза и тунец и кидаем их в папку спрайты, потом вытаскиваем на сцену и добавляем каждому из них компонент Polygon Collider 2D, ставим у компонента параметр isTrigger в true. Понадобится он нам чуть позже и не раз.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Теперь закидываем медузу и тунца со сцены в папку Prefabs, а со сцены их можно удалить, ведь наша цель состоит в том, чтобы они появлялись в правой части экрана и проплывали по воде в левую часть.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Создадим на сцене два пустых объекта и назовем их medusaFactory и tunaFactory - эти объекты будут порождать наших медуз и тунца.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Добавим нашим фабрикам иконки, чтобы мы их видели и расположим их в правой части экрана, за пределами видимости камеры.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Добавим к одной из наших фабрик новый скрипт и назовем его FactoryController.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Вот что будет в том скрипте:

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Добавим уже готовый скрипт и ко второй фабрике и настроим наши значения: Min и Max Time Out будут отвечать за то, какую минимальную и максимальную паузу нужно делать между генерацией объектов, MinY и MaxY за то, где по оси Y генерировать новый объект, ну и Prefab - это наш объект, чтобы задать его, берем в папке Prefabs тунца и тащим его в это поле у tunaFactory, аналогично поступаем и с медузой и medusaFactory.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Далее, добавляем компонент - новый скрипт нашему тунцу, назовем его, скажем, MovingObjectController. И в скрипте том вот что:

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Добавляем этот скрипт и медузе и настраиваем ей и тунцу максимальную и минимальную скорость.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

Теперь, если мы запустим игру, медузы и тунцы начнут появляться и проплывать мимо тюленя справа налево. Однако, как не сложно догадаться, они будут плыть и плыть в никуда. Поэтому создадим еще один пустой объект, который назовем Terminator, поместим его слева за пределами видимости камеры, добавим ему компонент Box Collider, настроим его так, чтобы всё, чтобы проплывало по нашей воде, попадало в этот коллайдер, не забываем выставить isTrigger в true, так же добавляем компонент Rigidbody2D и ставим isKinematic в true и добавляем компонент - новый скрипт, который называем Terminator Controller.

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

А в скрипте этом совсем короткий код, который будет удалять всё, что попадет в коллайдер нашего терминатора:

Делаем Тунца - три! Unity3D, Android, Windows Phone, Gamedev, Игры, Туториал, Длиннопост

При запуске мы увидим, что медузы и тунцы поплыли горизонтально мимо тюленя, они не причиняют ему вреда и пользы, просто исчезают в левой части экрана. На сегодня хватит, в следующий раз сделаем взаимодействие персонажа и других объектов, а значит и отображение этого взаимодействия в виде изменения количества очков и жизни на экране, то есть будем делать HUD. Постараюсь дальше писать чаще, чем раз в неделю, простите за столь длительные перерывы.

Показать полностью 11

Делаем Тунца - два!

Ну что же, после некоторого перерыва - продолжаем.

Начало здесь: http://pikabu.ru/story/delaem_tuntsa__raz_4489410

Мы остановились на том, что у нас есть тюлень и есть море. А сегодня будем делать так, чтобы тюлень по этому морю не просто плыл, но мог и нырять.

Для удобства я создал пустой объект и собрал в него все элементы моря. А теперь создаем в этом нашем общем море еще один элемент - тоже пустой объект и в нем добавляем один очень интересный компонент:

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

И еще один компонент:

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

Теперь настраиваем в Buoyancy Effector параметр Surface Level так, чтобы поверхность воды примерно совпадало с нижней линией волн. А в Box Collider 2D настраиваем его размеры так, чтобы всё море до дна было "водой", которая будет выталкивать нашего тюленя к своей поверхности.

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

Однако, пришло время добавить кое-что и к нашему персонажу, чтобы вода его действительно выталкивала и чтобы он покачивался на волнах:

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

После добавления компонента Rigidbody2D добавляем еще один - Circle Collider 2D:

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

И настраиваем размер коллайдера:

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

Теперь пришло время добавить нашему тюленю управление. Покуда мы работаем только с компьютером и пока еще не собираемся устанавливать игру на телефон, обойдемся управлением клавиатурой, тачскрин будем добавлять позже. Добавим нашему тюленю новый скрипт:

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

И вот что будет в том скрипте:

Делаем Тунца - два! Unity3D, Android, Windows Phone, Игры, Gamedev, Аркадные игры, Туториал, Длиннопост

Настройки Buoyancy Effector, массу тюленя в его Rigidbody2D, а так же нижнюю и верхнюю границу для ныряния в скрипте, в методе FixedUpdate() попробуйте менять, чтобы получить наиболее (на ваш взгляд) реалистичное движение персонажа. На сегодня всё, в следующий раз будем делать первых врагов и пищу тюленя.

Напоминаю, что установить готовую игру, чтобы увидеть результат можно здесь для Андроида: https://play.google.com/store/apps/details?id=com.FRN.tuna

и здесь для Windows Phone: https://www.microsoft.com/ru-ru/store/p/tuna/9nblggh4td3k

Показать полностью 8

Делаем Тунца - раз!

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

У этого поста есть дубликат: http://pikabu.ru/story/delaem_tuntsa_1_4487033 - было бы здорово, наверное, если бы админы его удалили. Я вчера просто забыл прикрепить пост к сообществу, но всё таки он должен быть именно здесь, в Лиге.


Ну что же, раз два человека высказали заинтересованность, как и обещал, пишу пост о том, как сделать на Unity3D простенькую игру, вроде того самого Тунца, который, кстати, уже зарелизился не только для Андроида, но и для Виндовсфона, вот ссылки:

https://play.google.com/store/apps/details?id=com.FRN.tuna


https://www.microsoft.com/ru-ru/store/p/tuna/9nblggh4td3k


На этом хватит саморекламы, перейдем к тому, что, возможно, будет интересно тем пикабушникам, которые хотят начать делать игры на Unity3D, но не знают как, не знают, с чего начать, не знают, где искать обучающие материалы. Тем же, кто имеет опыт создания игр, вряд ли будет интересно читать дальнейшее, ну разве что покритикуете меня и расскажете мне, глупому, как же надо делать на самом деле. :)


Для меня это первый опыт написания каких-то примеров, уроков по Юнити, так что пинайте меня ногами, тыкайте меня носом в мои ошибки (но не слишком больно).


Будем делать так: я создам в Юнити новый проект и заново сделаю игру. Правда, у меня уже заготовлены и скрипты и префабы и графика, так что я всё сделаю быстро. Вам же я не дам заготовок, ибо считаю, что намного полезнее самому набрать код, создать объекты и всё настроить, чем взять готовенький архивчик и оп-ля - урок пройден. Дело не обойдется одной статьей, хотя игра простенькая и маленькая. Будет их 3 или 4. А может и 5. Вообще первый будет рассказывать о том, как сделать скроллинг фонов в игре и будет он пробным, понравится ли, может быть что-то по-другому делать, всё по другому делать или вообще прекратить - жду отзывов и критики, короче говоря. Итак:



1. Идея


Будем считать, что Юнити у нас уже есть, установлено, мы зарегистрированы и т.д. и т.п., то есть можем запускать среду разработки и разрабатывать. Но, конечно же, игра начинается с идеи, с желания сделать что-то определенное, в определенном жанре. С Тунцом у меня всё было просто - еще на этапе первоначального знакомства захотелось сделать что-то вроде Корявой Птички, но немного другое, чтобы надо было не только уворачиваться, но и ловить, чтобы объекты на экране были не статичные, а движущиеся и... и... и еще что-нибудь, в результате раздумий над этим что-нибудь родилась идея перенести действия игры из воздуха под воду и единственным действием персонажа сделать не взлёт, а нырок.



2. Реализация


Как уже говорилось выше, я не стану рассказывать, где скачать и как установить Unity3D.


Мы сразу создаем 2D-проект и начнем делать игру. С чего же начать? Ну раз наш персонаж и все прочие в этой игре плывут в море, то очевидно, что с воды, дна и самого персонажа. Вам нужно нарисовать текстуры для воды и дна и спрайт для персонажа. Итак, у нас созданы текстуры, я импортировал их в Юнити (просто бросайте файлы драг-н-дропом в Assets и потом переключайте у них Texture Type со Sprite на Texture) и расположил эти текстуры на сцене.

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Красота! Но наш персонаж будет постоянно плыть по морю, то есть волны должны двигаться, да и песок на дне. Поэтому придется сделать скроллинг нашим текстурам.

Для этого создаем на сцене объект типа Quad:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Однако, волны так никуда и не плывут. Нужно продолжать. Берем мышкой одну из текстур и тащим ее на список компонентов нашего Quad, а точнее на компонент MeshRenderer и бросаем там. Получается вот что:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Пожалуй, стоит удалить текстуры, которые мы набросали до этого в сцену. Без ниж картина следующая:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Мелко как-то получилось, ну так возьмем и увеличим, поменяем значения Scale у нашего Quad (кстати, значение Scale по y на картинке у меня слишком большое, я его потом поменял на 10):

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Ох, страсть то какая, ужасно выглядит, наверное, нужно сменить шейдер. Меняем шейдер со стандартного на Sprites-Diffuse:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

И получаем уже что-то более-менее похожее на море и волны, а теперь проделываем всё это для второй текстуры волн и песка и видим уже что-то прямо таки похожее на сцену игры:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Небольшое пояснение: у нас будут волны, которые как бы между персонажем и нами и волны, которые за персонажем. А так же песок, до которого персонаж сможет опускаться. Нам нужно расположить песок на переднем плане, волны которые между персонажем и нами - за песком, а уже за ними - еще одни волны. А персонаж наш окажется между волнами. Для этого мы просто меняем координату Z в Position у компонента Transform нашего Quad. Песку поставим, например, 1, вторым волнам 1, а у первых волн пусть остается 0. Пора бы бросить в это море нашего тюленя!

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Выбираем наш Quad и видим, что в нем есть некоторые компоненты. Нам не понадобится компонент Mesh Collider, поэтому удаляем его:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

И вот я импортировал спрайт и бросил его в сцену, но тюленя не видно. Вода его полностью закрывает. Сделаем воду достаточно прозрачной, чтобы тюлень был виден - для этого идем у волн в компонент Shader и в нем жмем в Tint и меняем значение альфа-канала:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Итак, мы сделали воду достаточно прозрачной и тюлень стал виден, когда он всплывёт на поверхность, будет видна граница воды на его тельце, а так же дальние волны у нас отличаются оттенком от передних. Отлично. Теперь нужно сделать, чтобы волны двигались. Для этого создаем в Quad новый компонент - скрипт:

Делаем Тунца - раз! Unity3D, Android, Windows Phone, Игры, Gamedev, Туториал, Пример, Длиннопост

Называем скрипт WaterController. Открываем его и вводим такой код:



using UnityEngine;


using System.Collections;



public class WaterController : MonoBehaviour {



public float scrollSpeed;


private Vector2 savedOffset;


private Material mat;


private float offset = 0f;



void Start () {


mat = GetComponent<Renderer> ().material;


savedOffset = mat.GetTextureOffset ("_MainTex");


}



void Update () {


float rate = scrollSpeed * Time.deltaTime;


offset = offset + rate;


if (offset <= -1f || offset >= 1f) {


offset = 0f;


rate = 0f;


}


mat.mainTextureOffset = new Vector2 (offset, savedOffset.y);


}



}


Пожалуйста, озаботьтесь табуляцией самостоятельно, пикабу ее почему-то "съедает".


Сохраняем скрипт. Что происходит в нашем скрипте? В методе Start() определяется наш материал, который использует наш Quad и offset нашего материала. В методе Update() каждый кадр offset меняется и таким образом создается эффект скроллинга текстуры.


Запускаем наш проект... Тюлень в воде висит, но ничего никуда не двигается. Смотрим тогда на наш компонент Скрипт (или в код) и видим, что есть public переменная scrollSpeed. Делаем скорость, скажем, 0.2. И еще один нюанс: идем в наши текстуры и меняем Wrap Mode с Clamp на Repeat, чтобы скроллинг был закольцован. Теперь добавляем наш скрипт (уже не надо создавать новый) ко вторым волнам и к песку и выставляем им скорость , скажем пусть у дальних волн она будет 0.1, у ближних 0.2, а у песка - 0.3 (не забываем так же и про Wrap) и... Всё прекрасно работает!


На сегодня всё, пишите, ругайте, ставьте минусы и плюсы. Завтра или продолжим и заставим нашего тюленя качаться на волнах и нырять ко дну или перепишем этот урок, если вышло всё совсем плохо и непонятно.

Показать полностью 11
Отличная работа, все прочитано!