Pull to refresh

Comments 64

Огромная просьба минусующим — отписать о причине минуса. Я на хабре совсем недавно, это моя первая статья, и я нуждаюсь в объективной критике.
Возможно, потому что слишком много кода, слишком мало объяснений. Тупо копипастить ведь неинтересно и не познавательно, хочется понять, как и что работает.
Ну я же расписал немного, основные моменты — на блоки разделил, и тот кто разбирается — должен понять, т.к. вроде ничего сложного нет, но если причина кроется в этом — в ближайшие дни допилю модуль до дружелюбного вида, выложу, и построчно обьясню что и как.
Я не минусовал, но может быть за подобное?
> Сила тяги (оно же у нас будет являться скоростью и ускорением)

Вы тут три физических величины смешали же. Дальше не читал пока.
Возможно, но не думаю что под «простой физикой движения» я подразумевал все физические величины действующие на авто.
Да я про то, что это безграмотность на уровне физики седьмого класса школы. Вот за это и минусуют, наверное.
Отлично, а где бы еще побольше почитать/посмотреть уроков по Box2D на actionscript?
Кроме официальной документации, разумеется.
По себе скажу — я читал офф.документацию, в т.ч. английскую оригинальную версию и оно мне показалось довольно кодоёмким, отчего решил все-таки поковыряться и освоиться с оболочкой для сего — с QuickBox2D, даже несмотря на то что оно использует не последнюю версию Box2D'a. По поводу ресурсов в QuickBox2D ничего сказать не могу, но то что кода получается меньше в отличие от Box2D — это факт. По крайней мере самые основные моменты — создание примитивов/джоинтов в мире.
спасибо! первый же пост сразу порадовал, да и остальные статьи интересные
Вот что за менталитет такой — где бы почитать, но не официального. Почему? Зачем? Вам офф доков не хватает?
Менталитет тут не причем, официальная у меня есть, поэтому попросил интересные уроки от профессионалов. Энтузиасты пишут отличные уроки и снимают классные видеокасты, как например gotoandlearn.com
Уберите срочно с дропбокса, через 15-20 минут вам паблик за такие нагрузки на сутки отключат :)
Спасибо за совет, но куда тогда?
Можно загрузить страничку на тот же яндекс-народ или ещё куда. Ну или img.leprosorium.com/
Обновил, на народ. Ссылка в топике.
Когда назад едешь машина не будет описывают такую окружность как в примере, будет почти вокруг задних колес крутиться.
Что-то у тебя с расчетом трения не так.
Так ведь должно быть статическое трение и динамическое. Динамические при скольжении колеса, а статическое пока скольжения нет.
Из-за этого пока машину не сильно кидает в сторону она держится на колее из-за бОльшего статического трения, как только сила боковая превышает силу статического трения, ее срывает в занос и там уже динамическое трение учитывается.

Хорошая статья:
www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html
Хорошая, читал перевод на геймдев.ру, но не думаю что все эти тонкости нужны для 2D игры.
С помощью вашей машинки, кажется, получится только игра «Езда по льда».
Почему это вы так считаете? «Езда по льда» можно спокойно сделать из моего примера, достаточно убрать трения колёс по осям. А сейчас мне очень кажется что вы вообще не посмотрели демку.
А если вы про инерцию имели ввиду — то так задумано, и это легко меняется (коэффициент на 35 строчке из п.7).
«Езда по льда» — смешное название вышло :)

Я поиграл в демку. И мне показалось что машинка как-то очень легко уж разворачивается на 180 градусов, возможно изменением бокового трения можно избавиться от того, что субъективно мне не очень нравится.
гм, еще как вариант — добавить плавность поворота колёс, а не так как сейчас — либо макс.угол, либо 0. Тогда и повороты будут реалистичнее.
Не знаю причин минусующих, а машинка ездит забавно, спасибо за статью
Охренеть
В далеком 2004 году мне хватало около 30-ти строк и немного графики, чтобы сделать такую машинку.
Правда столкновения там было не сделать.
А заносы там може были?
Не знаю ответа автора, но предположу что реально могли бы быть и заносы, посмотрите на мою реализацию. Для реализации заноса достаточно преобразовать глобальный вектор движения колеса в локальный и приложить «боковое» трение. А управлять авто — просто прикладывать к текущему повороту колеса вектор скорости (в моем случае — speedX и speedY). Точнее сказать не прикладывать даже, а скорее даже направление — среднее между новым и предыдущим, а скорость (длина вектора) — выбирать наибольшее из двух(предыдущее и новое).
Не силён в физической части всех этих движков, это лишь мои предположения.
Я так понимаю, автор верхнего коммента писал без движков, на голом as.
Но я технически тоже расписал голую физику, хотя вот в 30 строк наверное это конечно не уложится.
Да, можно было реализовать и заносы. И да, все на чистом ас, тогда еще не писали движков.
Кстати, помню, пробовал тогда поднять тему написания 2д движка на форуме флэшер.ру, но встретили меня без энтузиазма, если не сказать хуже.
Примерно такая же история. Примерно тогда же делал машинки, гонки по столу между чашечками кофе, весь код был такого-же объема как в посте, но там были и столкновения с препятствиями, и отскоки, и смещение препятствий и всё-всё всё. И никакого движка не понадобилось.
У вас как-то странно машина ездит в ролике. Я может не правильно пользуюсь, но у меня получается ее повернуть вокруг одного колеса.
Плюс, я не знаю надо ли оно вам или нет, но колеса автомобиля при повороте наклоняются, чтобы обеспечить большее соприкосновение с дорогой.
Теперь (дабы всё эт было нагляднее) можно сделать вот что:

— При боковом скольжении большем, чем определённое (экспериментально подобранное значение) — рисовать чёрный след (покрышка проскальзывает), пусть он через пару секунд исчезает.
— Сделать не 1 машинку, а выбор — тяга только на передних, только на задних, или на всех колёсах (будет заметно различное поведение передне-заднеприводных машин :)
— Чем больше скорость — тем меньше угол поворота передних колёс (в силу естесственных причин — центробежная сила будет компенсировать поворот колёс тем сильней, чем быстрее мы едем)
Машинка… похожа на машинку, и правда :)

Когда-то я тоже думал, что на гиковском хабре много кода в статье — это маст хэв. Но со временем заметил за собой, что чем больше кода в статье, тем менее интересно мне ее читать (хотя по профессии и разработчик). Базовые идеи лучше объяснять естественным языком, а не портянками плохо отформатированного кода. Код-то можно и приложить отдельно, кому надо — посмотрят.
Ммм… А какова необходимость ради эффекта заноса подключать физический движок и писать почти пол тысячи строк?
Мне кажется пролистав учебник по динамике/механике можно было бы значительно упростить задачу.
Более простая реализация игрового мира и столкновений в будущем. В планах было сделать игру, но из-за нехватки времени проект заморожен, отчего решил поделиться наработками со всеми.
Еще неплохо физика автомобилей сделана в QuickB2. Сам пользуюсь только Box2D Alchemy-порт, но демка в QuickB2 понравилась (пятая по счету).
Да кстати, тоже достаточно хорошая реализация, но вот у меня немного не хватило мозга чтобы понять как оно ездит. Да и дрифты там слишком уж… Возможно, трение контролируется. но демка не очень впечатлила. Хотя конечно, было поначалу желание разобраться и с этим.
Следующей статьей ждем от вас готовый прототип годной игры. Спасибо за эту статью и за старания. Кто спрашивал про доп. информацию по Box2D во Flash, смотрите уроки Феронато www.emanueleferonato.com/ просто кладезь информациии не только по боксу.
Спасибо, учту все ваши пожелания и следующую статью оформлю годным образом и в нормальном законченном варианте.
Супер. Почему никто в флеш гонках не делает подобного? судя по статье — все не так уж и сложно.
Не помню ни в одной флеш-игрушке дрифта, связанного с направлением колес.

Автор молодец, детально продумывает мелочи.

П.С. хотя код действительно малопонятный, особенно когда вместо описания действия стоит название метода.

П.С. 2 мне показалось, что если сделать замедление\ускорение чуть меньше, игра станет немного реалистичней.
В данном варианте ускорения как такового вообще нету. Сразу прикладываем к телу максимальную скорость. Собственно отсутствие нормальной подобной статьи заставило меня сделать своё.
Флешу не нужна реалистичность, казуал рулит. Убедился в этом продав первую игру. Делал для себя, а надо было делать для народа. На миллион хомячков находится всего пару человек действительно заинтересованных реализмом. Поэтому, на продажу делаешь то, что требует народ, а в свободное время делаешь для души.
Вы так скоро разочаруете меня в людях, дайте мне верить, что нормальных людей больше.
Самому не хочется, но в процессе тестирования был удивлен. Я из поколения взрощенного на NES(Dendy) и Spectrum. Нам никто не объяснял куда и как нажимать. А при тестировании игры получил множество вопросов об управлении, хотя казалось бы, стрелочки и пробел потыкай, наугад хотя бы.
Возможно, потому что математика во флеше довольно медленная, если считать физику для 10-ти машинок и попутно рендерить красивые картинки, будет тормозить.
Мне кажется, вы стреляете из пушки по воробьям.
Тут отлично показано как можно сделать все гораздо проще (как по мне). Заносы и столкновения можно добавить без проблем. Постараюсь найти исходники игры, которая делалась по этому уроку полтора года назад, там довольно простая реализация получилась, с примерно равным этому результатом. Хотя, если это развивать в игру, то с бокс2д будет гораздо приятнее работать со столкновениями нескольких объектов, и т. п. Тут не поспоришь.

А вообще — статья хорошая, спасибо!
«Мне кажется, вы стреляете из пушки по воробьям.
Тут отлично показано как можно сделать все гораздо проще (как по мне).»

Гм. Я вроде выше отписал о моих предпочтениях относительно Box2D. Зачем нам делать свой физический движок если есть хороший готовый?

«Заносы и столкновения можно добавить без проблем»
Так где же вы были когда я ковырял тот пример с xitri.com? Да, я понимаю вас, всё знаете, профи и всё такое. Но почему же я тогда не нашел достойной реализации в момент разработки этого? Да и собсно в топике я расписал примитивную систему реализации заносов для 2D. И да, если говорите о простом создании заносов, то вы скорее всего по-быстрому нашли эту статью, в которой вся реализация заносов сводится к тому что физический движок за тебя все считает, т.к. по сути там (в 3D движке) ничего не стоит сделать круглое тело (оно же — колесо), добавить ему массы и трения, и просто крутить его, благодаря чему имеем практически готовую физику движения. В Box2D из-за того что это 2D движок мы имеем не круги, а прямоугольники, которые можем условно принять за кубы, но покрутить как круги мы их не можем, поэтому приходится просто «толкать» их вперёд и добавлять нужные трения по осям для достижения эффекта езды и одновременно дрифта (без такого трения получим эффект езды по льду).
простите, опечатался в «которые можем условно принять за колёса»
>И да, если говорите о простом создании заносов, то вы скорее всего по-быстрому нашли эту статью...

А-а-а, мои глаза!!!

ВНИМАНИЕ! WARNING! ACHTUNG!

Количество баннеров по ссылке из предыдущего комментария превышеает предельно допустимую норму в 20 раз! Настоятельно советую экологически чистый аналог (откуда и был, собственно, взят материал).
> Да, я понимаю вас, всё знаете, профи и всё такое.
Извините, если чем-то вас обидел. Я не ожидал что мой комментарий вас так сильно заденет.

Чтобы расставить точки над i — я не хотел показаться умнее, или потешить самолюбие, просто выразил свое мнение по поводу реализации похожей задачи. На вопрос где я был — не знаю. Сейчас я есть тут. Если интересно — можем попробовать совместно сделать такую же машинку без использования бокс2д, кто знает, может получится статья?
Извините за то что сорвался, но «Заносы и столкновения можно добавить без проблем» дано не для всех, как и множество других задач без готовых решений(движков/модулей/etc..), вопрос/проблема тут скорее в моем уровне знания флеша, из-за этого и выбрал готовый физ.движок для реализации таких вещей.

«Если интересно — можем попробовать совместно сделать такую же машинку без использования бокс2д, кто знает, может получится статья?»
Спасибо. Не думаю что это потянет на полноценную статью, хотя с удовольствием бы посмотрел на это даже сейчас, имея в распоряжении хорошую реализацию на Box2D.
У вас все хорошо получается, при желании заходите и пишите на flashgameblogs.ru/
как бы на него инвайт получить?
Извините, ответ на ваш коментарий ниже
Через какое-то время адекватного общения на flashgamedev.ru/ вы можете без проблем попросить инвайт. Для этого даже есть отдельная ветка.
Сам некоторое время возился с 2д-рейсинг игрой, но пока забросил. Самое интересно как раз таки была физика колес, а точнее шин.
www.racer.nl/reference/pacejka.htm
Вот как надо ТРУ делать :)
В ТРУ-симуляторах эта формула считается самой примитивной и годной лишь для начинающих :)
зато этот пример в комменте от Dulea — самое ТРУ для начинающих, т.к. с открытым кодом.
Попробуйте в дрифте «вниз» нажать. Полагаю, что это следствие отсутствия проверки на нулевую скорость при переключении вниз.
Другими словами — чтобы с передней на заднюю включить (и наоборот) — неплохо было бы проверить, а не равняется ли скорость нулю :)
нет, это следствие того что
1) проверка нажатия «назад» идет ПОСЛЕ проверки нажатия вперёд, и
2) как я уже говорил выше — нет никакого ускорения, а сразу придает телу максимально возможную силу.
Sign up to leave a comment.

Articles