PDA

Просмотр полной версии : Движок к игрушке


Chas
10.03.2003, 14:00
Господа, я вот тут движок к простенькой игрушке написал. А-ля towers. Реализовано:
1. полет ядра в соответствии с законами физики.
2. Стрельба сразу несколькими ядрами, четко фиксированное время между выстрелами.
3. Проверка столкновения не по боксам, а по шейпу
4. Отражение ядра от определенных объектов (с некоторой потерей скорости)
5. Счет попадания в «корзину».

Вот. Хочется на основе этого игрушку нарисовать, да художник из меня, как из Фримена физик ((с) Chas). Вот и предлагаю партнерство. К тому, что сделал можно добавить:
1. Ветер
2. Запись/загрузку счета в файл
3. Может быть мультиплеер в дальнем будущем.

И получается вполне достойная гейма, которую можно пихнуть к себе на сайт.
К примеру, новогодний вариант:
Стоит в уголочке Дед Мороз. У него под ногами мешок с подарками, откуда он по рандому достает подарок. Дальше стоят домики(плоские) с окошками и дымоходами. В окошках виднеются человечеки. У каждого из них над головой тучка (которая в комиксах), где показано, какую игрушку хочет. Задача ДМ – закинуть подарок к нужному челу в нужный дымоход. Можно ,для прикола, добавить, скажем, уток, которых можно сбивать или скажем среди подарков пусть иногда попадаются гранаты.
Другие мысли выслушаю с удовольствием.

C2Plus
11.03.2003, 04:47
круто.

ЗЫ. А кто такой Фримен?

Chas
11.03.2003, 09:27
Главный персонаж Half-life, который, работая в научной лаборатории, неизвестно зачем кинул тележку в портал, после чего чего-то там произошло и в лабораторию посыпались орды монстров.
ЗЫ: а что, правда, неплохая флешка вышла???

F_Flash
11.03.2003, 13:31
Если треуголник какой либо перемещаешь то глючит. На некоторых частях неверный угол отражения.

ice_nugget
11.03.2003, 18:09
Насчет гранат в подарках это интересно,а так ничего нового. А chat ты можешь на flashe написать?

TTS
11.03.2003, 18:35
Хреново отскакивают. Не под тем углом.

Chas
11.03.2003, 19:51
А там такая фишка:
Шарик у меня имеет некоторый радиус. Что бы обнаружить столкновение не с боксом, а с шейпом, я исследую точки по окружности радиуса моего шарика, скажем, с шагом 10 градусов. Если есть столкновение с каким-либо объектом имя которого Bar+(some number), то я меняю направление движения шарика на противоположное углу, по которому нашел точку столкновения(корявое такое предложение, но не знаю, как еще лучше объяснить) и отнимаю немного скорость. Это прекрасно работает, если у меня наклонные крыши или кривые поверхности (типа полукруга), но абсолютно не подходит, если мяч падает на абсолютно ровную прямую. Тогда, он в половине случаев отлетает абсолютно не корректно, даже если уменьшать шаг приращения угла. Как избавиться от этого артефакта я не знаю 8-[ Если кто видел лучший метод, киньте ссылку, плиз!

ЗЫ: а зачем чат писать, если готовые валяются. Вон DAGChat совсем недавно скачал, и, кажется, отсюда. А, в принципе, реально, а что, работу хочешь предложить???

F_Flash
11.03.2003, 20:09
Способ лучше не пользоваться хиттестом, а задать поверхность отрезками, о обрабатывать коллизию и столкновение как делаю все нормальные люди ;)

Chas
11.03.2003, 21:22
Если бы глубокоуважаемый обратил внимание, то заметил, что писалось сие в 5х а не МХ. И, собствено говоря, как коллизию нормальные люди делают ( на смайлик, сделаем вид, я внимание не обратил :D )??

F_Flash
11.03.2003, 21:51
1.Я гдето упомянул про МХ? Укажи где.
2.По поводу коллизии, почитай алгоритмы людей.Мне тебе их описывть что ли. А так же предупреждение коллизии.
3.Обращай внимание.
4.Если пишешь физику так пиши ее по всем законам. Учитывая силу упругости шарика, силу тажести , массу шарика и т.д... Или формулы по физике тоже нужны?
5.И прежде чем язвить подумай прав ли ты.

Chas
11.03.2003, 23:47
Туше...
1. Ммм.... тогда что ты имеешь в виду под фразой "задавать поверхность отрезками"?? В 5х тяжело рисовать программно отрезками (хотя реально)
2. У меня нет цели построить модель реально летящего мячика, ударяющегося о препятствия с учетом реальных g, коэффициентов трения, упругости удара... Хотелось просто нарисовать флешку в которой будут летать мячики, и это будет похоже на реальный мир, т.е. схалтурить, упрощая себе работу. Хотя формулы
x=x0+V*t*cos(angle)
y=y0+V*t*sin(angle) - gt^2/2
насколько я помню нашел я в справочнике по физике.
3. Искал уроки сдесь(перед тем, как стал рисовать сам, я ведь ленивый), но не нашел. Потому и спрашивал, "а как же нормальные люди делают". Полезу наверное на rambler.

ЗЫ: это не наезд, это возвраст, знаете ли...

F_Flash
12.03.2003, 13:11
1.см аттач.
2.Вобщем делал я такую штуку как тебе нужно.
В чем идея.
а) Физика для полета шарика.
в начаньной точке у тебя задано ускорение. v- вектором.
где норма(длина) вектора это сила ускорения.
а направление вектора. это направление ускорения.

Силы.
1)Сопротивление воздуха. k от 0 до 1
2)Сила тяжести. Fg - вектор.
Взаимодействие.
Сопротивление воздуха действует в противопложном напралении ускорения. поэтому можно ввести коефициент k и на каждом шаге v=k*v.
Суммарная сила силя тяжести и ускорение это просто сумма данных векторов. т.е v=v+Fg. так же вектором можно задать силу и направление ветра темже вектором, и приплюсовывать.
Это простейшая модель.
3. А вот самое интересное столкновение, коллизия. И предупреждение коллизии, кроме того замулька в чем, флешь разбивает выполнение мувика на определенные сегменты фремени заданные fps. Так вот за кадр, у тебя шарик может пролететь сквозь препятствие.
Нужно что сделать. Найти точку соприкосновения с препятствием, дистанцию до этой точки, и остаток силы для отражения. И поставить шарик в нужную позицию. Вот здесь понадобится аналитическая геометрия, о которой тебе расскажут в университете:)Или уже рассказали.

Про вращательный момент шарика я молчу, и про силу деформации.