forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Unity (http://forum.boolean.name/forumdisplay.php?f=147)
-   -   Into Orbit (http://forum.boolean.name/showthread.php?t=20236)

RegIon 26.03.2016 08:46

Into Orbit
 


Into Orbit

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


Графическая составляющая на 3, так как все же рисовать просто так не получается, нужен какой-то навык, но со временем попробую все привести к одному стилю.

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

Система прокачки:
  • CONE - обтекатель, чем он круче, тем меньше сопротивление, тем быстрее разгон и ниже вращающий момент.
  • Fuel - топливый бак, чем он круче, тем медленнее тратится топливо. Вначале это 8% в секунду.
  • Engine - двигатель, чем круче - тем выше подъемная сила. Так как g=10, а масса ракеты 10, то начальная сила = 102H. Максимум - 110H
  • Stab - стабилизаторы. Чем круче - тем меньше горизонтальная скорость.
Что еще необходимо сделать:
  • Система прокачки ракеты, меню уже есть, но так как нету спрайтов - не работает. - Сделано!
  • Придумать куда деть топливную панель. - Под индикатор высоты
  • Нарисовать и ввести новые объекты. В плане: вертолет, самолет, облачко с молнией, космический мусор на высоте > 120 км
Скачать с SlideME (старая версия)
Скачать с GoogleDrive

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

ОБНОВЛЕНО(31.03)!
  • Изменена механика "полета" ракеты
  • Перерисованы некоторые объекты
  • Добавлены некоторые эффекты и объекты
  • Добавлено управление гироскопом
  • PixelPerfect, не больших экранах будет маленькая ракета. Оптимизированно под 960 и 1280.

Скрины (устарели):


RegIon 26.03.2016 19:56

Ответ: Into Orbit
 
UPD:
  • Рабочая система прокачки, конфигурация и бюджет сохраняются
  • Unity ADS
  • Небольшая оптимизация, подрисовал UI
Ссылка: https://goo.gl/NpJ5xy


Понял, что когда дофига UI элементов, то очень сложно их всех обновлять.
PAX, как вы работаете с UI, есть какой-то скрипт менеджер, который обновляет текст, иконки и т.д, или есть какой-то компонент-слушатель у элемента, привязанный к определенной переменной и он обновляется при ее обновлении? (я так хотел сделать, но нельзя же вроде узнать о изменении поля класса без проверки, или можно?)

Nex 26.03.2016 21:15

Ответ: Into Orbit
 
Цитата:

Сообщение от RegIon (Сообщение 305011)
я так хотел сделать, но нельзя же вроде узнать о изменении поля класса без проверки, или можно?

Можно сделать так если я тебя правильно понял.
PHP код:

private double _seconds;
public 
double Seconds{
    
get { return _seconds; }
    
set _seconds value; }


В set {} например можно вызывать функцию перерисовки или даже условие запилить типа:
PHP код:

set {
    if(
value == true) { Debug.Log("Ololo"); }


get - https://msdn.microsoft.com/ru-ru/library/ms228503.aspx
set - https://msdn.microsoft.com/ru-ru/library/ms228368.aspx

impersonalis 26.03.2016 22:19

Ответ: Into Orbit
 
Концептуально, абстрактно от языков - решение от Nex лучшее.
Ещё можно велосипедить с многопоточностью* и отслеживанием через указатель*, но запаришься решать проблемы с синхронизацией ("ABA","состояние гонки" и проч), блокировками и атомарностью операций.

*- без понятия: в каком виде это реализовано в Юнити

RegIon 26.03.2016 23:23

Ответ: Into Orbit
 
Get/set конечно хорошо, но это все равно получать ссылку на объект и различные классы для различных переменных.
Тогда проще в апдейте обновлять, проверяя на изменение. (Перерисовка текста довольно тяжёлая )

h1dd3n 27.03.2016 09:43

Ответ: Into Orbit
 
В обычном C#, это делается через биндинги и INotifyPropertyChanged.
https://msdn.microsoft.com/ru-ru/lib...vs. 110).aspx
Весь WPF на этом построен.

Однако в unity старый как говно мамонта mono, так что не скажу наверняка сработает ли это там.

RegIon 27.03.2016 20:30

Ответ: Into Orbit
 
Никак не могу понять как ограничить скорость перпендикулярную оси направления.


Двигается с помощью AddForce, из-за этого очень сильно разгоняется перпендикулярно оси UP при малейших поворотах вектора приложенной силы, что хотелось бы ограничить. Что-то туплю.
Кусок кода, в котором уже нету того, что могло бы ограничить скорость:
PHP код:

var force_vector transform.up;
                
force_vector *= (rocketConfig.forceMultiplier 10f 100f);

                
_rigid.AddForce(force_vector);

                
float airPres = (1f rocketConfig.airDragRotate) * transform.right._rigid.velocity.magnitude 0.15f;
                
_rigid.AddTorque(-direction maxRotSpeed rocketConfig.horizontalStability airPres);
                
_rigid.angularDrag rocketConfig.horizontalStability maxRotSpeed

Раньше просто ограничивал _rigid.velocity.x, но не знал, что он в мировых координатах, и по этому по X он совсем переставал двигатся, а по Y ускорялся.

UPD. Сделал кастыль - меняю rigidbody.drag линейно зависимо от скорости по X, более-менее устраивает поведение.

Nex 27.03.2016 23:07

Ответ: Into Orbit
 
Тут наверно поможет Rigidbody2D.angularDrag ну или Rigidbody2D.angularVelocity.

RegIon 27.03.2016 23:19

Ответ: Into Orbit
 
Обновил. Подробности в шапке. Ссылка: http://goo.gl/IDHJfF

UPD. Русую более качественные спрайты всякой фигни:

RegIon 31.03.2016 20:20

Ответ: Into Orbit
 
Обновил.
Подробности в шапке.
Скачать: https://goo.gl/bbyvJw

Было бы неплохо, если бы поигрались и отписались результатом.

RegIon 04.04.2016 23:44

Ответ: Into Orbit
 
Поздравьте меня, я приобрел аккаунт Google Play developer, жду одобрения публикации!

Не могу менять шапку.

Ссылка GooglPlay
Into Orbit
Тестовая версия 0.5.1t, довольно много правок. BetaTest
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.



Nex 05.04.2016 06:38

Ответ: Into Orbit
 
Цитата:

Сообщение от RegIon (Сообщение 305240)
Поздравьте меня, я приобрел аккаунт Google Play developer, жду одобрения публикации!

Поздравляю! Теперь надо всегда помнить, что девелопер акк, ютуб канал и почта связаны и если где то накосячить, то все могут разом забанить. ;)
Кстати линк на игру в маркете можно сразу выкладывать правда можно будет зайти по нему только после одобрения публикации.

Жека 05.04.2016 14:41

Ответ: Into Orbit
 
"Будь проклят тот день, когда я сел за баранку этого пылесоса!" :-)
Тяжко летать. Прочёсывая небо из стороны в сторону подобрал горючку, но улетел за экран! Абидна.)
Кнопка "жмяк" наверное не уместна.
Цвета приятные, кроме серых менюшек.
Ещё у тебя размер проги всего 11мб. Забиваешь на x86 процы?

RegIon 05.04.2016 18:00

Ответ: Into Orbit
 
Цитата:

Сообщение от Жека (Сообщение 305248)
"Будь проклят тот день, когда я сел за баранку этого пылесоса!" :-)
Тяжко летать. Прочёсывая небо из стороны в сторону подобрал горючку, но улетел за экран! Абидна.)
Кнопка "жмяк" наверное не уместна.
Цвета приятные, кроме серых менюшек.
Ещё у тебя размер проги всего 11мб. Забиваешь на x86 процы?

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

Есть идея миникарты в виде пикселей, где показаны объекты (любого типа одинакового) и границы, относительно ракеты в определенном радиусе
На какой тогда сменить, а то мне кажется, что я гот какой, всегда темное делаю?

Да, хотел отдельно билды под платформы делать, но не нашел куда пихать билд под x86. Не охота раздувать до 40метров, не охота создавать копию приложения, но под другую платформу. Или придется что-то выбрать?

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

Жека 06.04.2016 05:26

Ответ: Into Orbit
 
В экспорте под андроид просто выбрать 2 проца. Получишь около 24мб прогу. Да и всё.

Миникарта прикольно.

Ещё может при старте давать ракете небольшой рывок вверх?
Щас если при старте есть наклон то при взлёте сразу взрываешься.


Часовой пояс GMT +4, время: 02:31.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot