Просмотр полной версии : Делаю игру HELP
vitocorleone
15.11.2002, 12:32
Я делаю игру,нужно,чтобы шар летел по дуге(но не MOTION GUIDE)от одного места(x=10,y=100) туда,куда щелкну,
но не в то место куда щелкну,а рядом,выше,ниже на 1,2,3,4 пиксела.Я знаю тут нужны синусы косинусы слитые с randomОМ,
но я только в восьмом классе,мне этого не понять.
Помогите или шлите исходник.
DeliMIter
15.11.2002, 13:36
По какой дуге это раз?
Во-вторых, синусы на требуемом уровне не так уж и сложны.
greyshaman
15.11.2002, 13:53
а при чём здесь синусы, квадратные уравнения мимо прошли
Alexey (G-fi)
15.11.2002, 14:35
2 vitocorleone ...попробую объяснить, надеюсь, поймешь.
1. Смещал начало системы координат в отправную точку (на цифрах только, конечно)
2. Брал две функции:
Синусоида, и линейная функция, которая проходит через начало координат (отправную точку) и конечную.
Линейная функция: y= ax+b. Так, как функция проходит через начао координат, b=0.
Потом находил общее решение, т.е. точку, через которую проходят обе функции. у меня получалась точка с координатами, скажем (x1;y1).
Итак:
A(x;y) – отправная точка
B(x2;y2) – конечная точка
С(x1;y1) – точка пересечения двух функций.
И теперь, ради чего все это:
k(коефициент проэкции) = (x2-x)/x1.
Получаешь коєфициент, на который нужно помножить каждую координату синусоиды, чтобу получить кривую от начальной точки до конечной.
Перебирая координаты x с шагом 0.1 (используя коэфициент) до тех пор, пока x точки движения не достигнет конечного x, получаешь дугу как значения синусоиды, спроектирование на площадь с коэфиицентом k.
:D :D :D
фуф. Исходник есть, рабочий, но сырой больно...
Надеюсь, понятно объяснил...
Это всё делается методом Тыка (такой был ученый).
на Enterframe шарика вещай обработчик на изменение его координат, а dx и dy высчитывай по формуле, которую можно извращать до неимоверности выше указанным методом :)
Max N Chubin_
15.11.2002, 16:10
Давай подумаем головой.
У тебя есть тело, вылетающее с некой начальной скоростью из класса, ой из пушки под заданным углом.
Пренебрежем сопротивлением воздуха и ветром для упрощения задачи...
итак
.
. .
. .
. .
. .
*
//
_ //
! / !
_!____!____________________
1 - любое тело брошенное под углом к горизонту летит по параболе! y=k*x^2
2 - на тело воздействует сила тяжести и тело движется (проекция на ось Y) равноускоренно, с ускорением свободного падения 9,81 м/с^2.
3 - тело всегда стремится грохнуться на землю, а потом пару раз отскочить.
4 - для расчета перемещений тела за интервал времени по проекциям на оси можно воспользоваться тригонометрическими функциями SIN(), COS():
dX=speed*Math.cos(angel);
dY=speed*Math.sin(angel);
где angel - угол полета тела, speed - его линейная скорость в данный момент времени.
но ввиду того что Flash предоставляет нам возможность моделирования поведения объекта в реальном времени, задача упрощается!!!!
короче при выстреле расчитываем вертикальную и горизонт. составляющую скорости по формулам см.выше. коррдинаты объекта каждую секунду изменяем на величину скоростей соответственно. Вертикальную скорость изменяем каждую секунду на величину ускорения свободного падения.
ВСЕ!!!!
вот примерчик... 7 минут ушло чтобы вспомнить школьный курс!!!
Alexey (G-fi)
15.11.2002, 18:22
Max, а если человеку нужна была траектория. Ведь не задан был вопрос: я не знаю, как убыстрить (замедлить) движение в конечной точке с физическим отскоком. :)
А о том, что трудности с синусом, кос... ;)
Я надеюсь, что по крайней мере, ответы на вопрос ему
помож(г)ут :D
Max N Chubin_
15.11.2002, 18:48
2 Alexey (G-fi) : а что же парню делать останется если я ему еще и посчитаю угол и скорость для того чтобы снаряд попал в эту точку????
ты ж читай:
Я делаю игру...
а не Макс делает игру...
;) ;) ;)
Фактически игра сделана уже.. даже вон попадание снаряда в домик обрабатывается...
а идея у парня мне кажется неверная - ну шо за игра, если я тыкаю мышкой куда надо, а RANDOM мне все портит??? Игра сводится к тому что нужно дотыкаться пока RANDOM не даст нуль.
пусть как в старой доброй игре - "Танковые сражения" меняет угол ствола и скорость вылета снаряда...
а если хочет все-таки по своему сделать, то и флаг ему в руки! Да и не знаю я что за игру он делает...
Гы, если наджо просто по дуге, есть вообще простой способ без хитрых формул.
делаешь мувик в котором шарик взлетает и падает моушн твином. Чтобы он это делал натурально, используй изинг.
потом этот мувик горизонтально двигай уже обработчиком из одной точки в другую - это вообще просто сделать. надо только координату х увеличивать на расстояние между точками поделенное на количество шагов а расстояние рандомом разбавляешь. на обработчик самого шарика (который в мувике сидит) делаешь проверку на клиппинг с целью куда стреляешь.
Max N Chubin_
15.11.2002, 19:47
ну в твоем способе есть сурьезный недочет!
1 - шарик всегда будет взлетать на одинаковую высоту
2 - если цель находится совсем рядом то стрелять навесом на опупенную высоту - не красиво!!! :D
3 - мне интересно как ты будешь создавать эффект пристрелки (када комп хочет тебя замочить)
Есть хорший вариант - ЧЕСТНЫЙ !
а считать его можно так:
1 измеряем расстояние до цели, определяем середину.
2 задаемся случайным углом (в зависимости от расстояния например 3 диапазона 0-30, 31-60,61-89)
3 по углу расчитываем Y координату перечения луча ствола пушки с осью Y(как бы смещаем туда будущую вершину перевернутой параболы (ветви вниз))
4 расчитываем параметры параболы y=kx^2, а именно k- коэффициент сжатия
5 производим расчет полета в цикле, до момента когда координата Х снаряда не станет равной координате X цели
6 оцениваем ошибку - исправляем k и взвращаемся к п. 5
на картинке видно что погрешность стрельбы будет сильно зависеть от разности координат Y целей. Что для нас очень даже на руку! Получается что на ровной местности комп попадет в цель с большей вероятностью чем в гористой, когда объекты будут на разной высоте. Кроме того такой алгоритм позволит определять наличие прегад на пути снаряда и в зависимости от их наличия менять режим стрельбы - от прямой наводки до навесного огня.
Короче уже пора домой и нету времени все это делать, а у желающих есть в переди целых 2 выходных!
Успехов!
Max N Chubin_
15.11.2002, 19:56
см. SWF ку
там подробный алгоритм в примере
vitocorleone
17.11.2002, 17:26
Спасибо всем за всё.НО тот кто сказал,что в игре мы будем зависеть от random не прав.Ядро по дуге-это своего рода
бонус росле того как игрок наберёт кол-во очей.И все зависит от фортуны
Если хош, могу порыться в своих исходниках, я нечто подобное делал
http://www.rcr-1.narod.ru/RCRCannon.html
Max N Chubin_
18.11.2002, 12:34
2 Racer:
Ну ты зверюга!!!
:D
вместо того чтобы шилку дать поставил орудие...
из такой пушки по городу классно струлять шоб стены валить!
а по шарам и дири... дира... дирежбомбелям цепями и книпелями стрелять нуна! Вот так:
http://www.autotaganka.ru/para.html
2 vitocorleone:
Ну, все! Теперь ты просто профи по физике... ждем-с игру! :cool: не забудь позвать на презентацию!!!
vitocorleone
20.11.2002, 21:23
Не забуду спасибо за всё
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.