Пятница, 15 Ноября 2024, 07:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблемы торможения и сцепления с землей в 2d симуляторе
EscatelloДата: Воскресенье, 08 Марта 2015, 23:17 | Сообщение # 1
был не раз
Сейчас нет на сайте
Ребят, приветствую.
Необходима небольшая консультация. =)

Пилю сейчас очередного потомка Elastomania на Скирре.
Если кто не знает, то это симулятор мототриала с видом сбоку и простейшей физикой.
Идея проста: В начале, на спрайт мотоцикла, на две imagepoint вешаются на hinge-соединения, два спрайта колес с Collusion Mask = Ellipse. Все три объекта с модификатором Physics и включенной гравитацией.
При нажатии на кнопку газа заднему спрайту колеса дается угловая скорость, на другую он должен тормозить этими колесами, а стрелки управляют центром тяжести мотоцикла и поворачивают его в полете.


В общем столкнулся я с проблемой Тормоза.
Задача: Сделать возможность путем снижения скорости вращения колес тормозить до нуля и ими же удерживать стоящий мотоцикл на наклонных поверхностях.

Написал самое логичное событие которое можно сделать:"Пока нажата клавиша X, то спрайту колеса Wheel - Set Angular Velocity = 0". Сделал так для обоих колес.
Не тут то было - мотоцикл лишь слегка притормаживает на ровной поверхности и спокойно катится вниз по наклонным поверхностям.
Окей.
Написал "Wheel - Set Angular Velocity = Wheel[Physics].AngularVelosity * -1" (что по идее должно давать какое-то сопротивление вращению). На ровной поверхности он тормозить стал сносно, однако проблема "удержания" сохранилась.
Экспериментировал с запретом на вращение колес, уменьшением линейной скорости и увеличением Linear Damping(в обоих случаях что колес, что спрайта самого мотоцикла) - во всех случаях это рушило hinge-соединения, крепящие колеса к мотоциклу. Причем даже если он стоял на месте.
Единственное действие которое колом останавливало колеса, ничего не нарушая, это - set angle. Счастье вроде бы, заработало.
Но нет. Тут я уже готов был материться - с застопоренными колесами, мотоцикл преспокойно, с той же скоростью начал СОСКАЛЬЗЫВАТЬ с наклонных поверностей. Даже при friction 1000% и у колес и у поверхности.

С матом стал экспериментировать дальше - Квадратные спрайты ящиков при таком трении держались на наклонных поверхностях как приклеенные. Колесо же нет.
И тут меня осенило: Collusion Mask - Ellipse, предполагает создание идеально круглой маски, которая касаться ровной поверхности будет только грубо говоря лишь парой пикселей. Отсюда и проблема - настоящая шина - мягкая и деформируется, увеличивая площадь соприкосновения, что здесь реализовать сложно.

Ребят, может чего посоветуете?
Какие костыли я еще не пробовал? Т_Т


Сообщение отредактировал Escatello - Понедельник, 09 Марта 2015, 02:41
LasmelanДата: Понедельник, 09 Марта 2015, 01:33 | Сообщение # 2
Construct 2 & Classic
Сейчас нет на сайте
Может быть, при нажатии на тормоза обнулить гравитацию?

Мое портфолио:
EscatelloДата: Понедельник, 09 Марта 2015, 02:36 | Сообщение # 3
был не раз
Сейчас нет на сайте
Lasmelan, Логику понял(нет гравитации - нет сил, заставляющих скользить вниз), но не пойдет.
Гравитация обнуляется, а инерция сохраняется - в сочетании с блокировкой колес, мотоцикл при торможении на скорости, просто кувыкается через переднее колесо и летит дальше по воздуху(гравитация то вырублена).
Плюс нажатие на тормоз при прыжке с трамплина будет отправлять аппарат в длительный полет.

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


Сообщение отредактировал Escatello - Понедельник, 09 Марта 2015, 02:36
LasmelanДата: Понедельник, 09 Марта 2015, 06:24 | Сообщение # 4
Construct 2 & Classic
Сейчас нет на сайте
Escatello, кстати, на счёт костыля... Можно сделать объект, который будет незаметно приподнимать мотоцикл спереди при тормозе. Это сработает на земле, и не отразится в полете.

Мое портфолио:
EscatelloДата: Понедельник, 09 Марта 2015, 13:59 | Сообщение # 5
был не раз
Сейчас нет на сайте
Lasmelan,
Тоже идея, если пользоваться этим на малых скоростях. На больших же рычаг этот просто вырывает из шарнира, или его колбасит так, что мотоцикл в итоге так же переворачивается.
Я все еще надеюсь найти изящное и надежное решение.

Я не знаю, может быть есть возможность как-то "приклеивать" объекты к поверхности? =/
Кажется я даже где-то видел исходник такой игры...Попробую.


Сообщение отредактировал Escatello - Понедельник, 09 Марта 2015, 14:10
LasmelanДата: Понедельник, 09 Марта 2015, 18:09 | Сообщение # 6
Construct 2 & Classic
Сейчас нет на сайте
А если сделать скорость равной нулю, а затем воспользоваться объектом? Он остановится и не будет скользить. Еще идея - при нажатой стрелке вниз намного увеличить трение. Еще материал для экспериментов.

Мое портфолио:
EscatelloДата: Понедельник, 09 Марта 2015, 20:53 | Сообщение # 7
был не раз
Сейчас нет на сайте
Lasmelan, Если проводить с со прайтом мотоцикла нефизические действия то колеса отваливаются из-за разрушения hinge-соединений. Даже когда мотоцикл просто стоит на месте.
А трение итак уже 1000% на колесах и 1000% на поверхностях...
LasmelanДата: Понедельник, 09 Марта 2015, 21:33 | Сообщение # 8
Construct 2 & Classic
Сейчас нет на сайте
Escatello, так объект-то физический, и так же, как колеса, привязан к мотоциклу.

Мое портфолио:
EscatelloДата: Понедельник, 09 Марта 2015, 23:58 | Сообщение # 9
был не раз
Сейчас нет на сайте
Lasmelan,
Подожди, я возможно тебя не понял. Давай сначала:
Каким объектом и как воспользоваться ты предлагаешь?
LasmelanДата: Вторник, 10 Марта 2015, 04:18 | Сообщение # 10
Construct 2 & Classic
Сейчас нет на сайте
Escatello, физический объект, который закреплен спереди или сзади мотоцикла над землей, и при тормозе идет вниз, чуть примоднимая переднее/заднее колесо. Объект невидимый. Возможный вариант - при нажатии стрелки назад менять кадр анимации на второй, который длиннее. При этом кадр меняется после того, как мотоцикл остановился. Тогда катиться вниз он не будет.

Мое портфолио:

Сообщение отредактировал Lasmelan - Вторник, 10 Марта 2015, 04:20
EscatelloДата: Вторник, 10 Марта 2015, 23:11 | Сообщение # 11
был не раз
Сейчас нет на сайте
Lasmelan, Закреплен каким методом? *все еще удостоверяюсь, что правильно понимаю идею и знаю функционал CC*
LasmelanДата: Среда, 11 Марта 2015, 00:05 | Сообщение # 12
Construct 2 & Classic
Сейчас нет на сайте
Escatello, проблема скорее во мне, так как я такого рода игр не делал ни разу. Каким методом у тебя закреплены колеса? Таким же я предлагаю закрепить и тормоз.

Мое портфолио:
EscatelloДата: Среда, 11 Марта 2015, 16:32 | Сообщение # 13
был не раз
Сейчас нет на сайте
Lasmelan,
Колеса закреплены через вращающиеся соединения(hinge), которые мгновенно рушатся, если на один из прикрепленных обьектов применять:
Цитата
запрет на вращение колес, уменьшение линейной скорости и увеличение Linear Damping

А если применять к ним Add Force то сила будет прилагаться ко всей системе, т.е ко всему мотоциклу.

Зы А вот анимацию я еще не применял кстати...((
Надо тоже попробовать. Исходник с приклеиванием я так и не нашел(
LasmelanДата: Среда, 11 Марта 2015, 17:11 | Сообщение # 14
Construct 2 & Classic
Сейчас нет на сайте
Escatello, кстати, можно же сделать колесам маску столкновения квадратную тогда... Если будет нормально сочетаться с игрой.

Мое портфолио:
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг