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

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

Начало здесь: 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

Лига Разработчиков Видеоигр

6.7K постов22.2K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Автор поста оценил этот комментарий

Реклама ?

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

Зачем IsJump имеет доступ public? Если вы хотите что бы другие классы могли знать о значение перемененной? Но думаю другие части кода не будут заставлять "подпрыгнуть" лучше создать поле:
public bool IsJump { get; private set; }
Потом почему ввод игрока и сам прыжок в разных функциях? Вы в курсе, что FixUpdate() и Update() вызываются независимо друг, от друга и при высоких фпс FixUpdate() может вызваться один раз на несколько кадров, а при низких фпс несколько раз за один кадр, а Update() один раз за кадр из-за этого при разных фпс игра может себя вести по разному.
И зачем столько памяти жрать?
Так же зачем проверять находится ли он в прыжке, таким странным способом. Лучше IsJump блокировала рекцию на нажития пробела.

Foo()
{

if(Input.GetKeyDowm(KeyCode.Space) & !IsJump)
{

IsJump = true;
Jump()

}
}

И где-то отслеживать, когда прыжок пройдет и поставить IsJump = fallse;
Хотя в данной ситуации это как из пушки по воробьям.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо. Другой класс будет менять isJump (хотя правильнее было бы назвать isDive, конечно). Насчет Update() и FixedUpdate() я в курсе, как в курсе и того, что физику применять (работать с Rigidbody) лучшев FixedUpdate(). Проверка, находится ли тюлень в прыжке? Да нет её там. Во-первых, он всё таки ныряет, во-вторых, нырнуть сразу после нырка еще раз, отпустив и нажав кнопку сразу же снова - можно.