Проблемы торможения и сцепления с землей в 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, кстати, можно же сделать колесам маску столкновения квадратную тогда... Если будет нормально сочетаться с игрой.
Мое портфолио:
|
|
| |