![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2002
Адрес: Россия.Владикавказ
Сообщений: 55
|
Я делаю игру,нужно,чтобы шар летел по дуге(но не MOTION GUIDE)от одного места(x=10,y=100) туда,куда щелкну,
но не в то место куда щелкну,а рядом,выше,ниже на 1,2,3,4 пиксела.Я знаю тут нужны синусы косинусы слитые с randomОМ, но я только в восьмом классе,мне этого не понять. Помогите или шлите исходник.
__________________
vitocorleone |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
По какой дуге это раз?
Во-вторых, синусы на требуемом уровне не так уж и сложны.
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
Регистрация: Aug 2001
Адрес: vg
Сообщений: 352
|
а при чём здесь синусы, квадратные уравнения мимо прошли
|
|
|||||
|
Регистрация: Oct 2002
Адрес: Украина, Каменец-Подольский
Сообщений: 105
|
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. фуф. Исходник есть, рабочий, но сырой больно... Надеюсь, понятно объяснил...
__________________
...и пролился на него свет, и выросла тень позади него... |
|
|||||
|
Это всё делается методом Тыка (такой был ученый).
на Enterframe шарика вещай обработчик на изменение его координат, а dx и dy высчитывай по формуле, которую можно извращать до неимоверности выше указанным методом ![]()
__________________
Однозначно! |
|
|||||
|
Давай подумаем головой.
У тебя есть тело, вылетающее с некой начальной скоростью из класса, ой из пушки под заданным углом. Пренебрежем сопротивлением воздуха и ветром для упрощения задачи... итак . . . . . . . . . * // _ // ! / ! _!____!____________________ 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 минут ушло чтобы вспомнить школьный курс!!!
__________________
Max. |
|
|||||
|
Регистрация: Oct 2002
Адрес: Украина, Каменец-Подольский
Сообщений: 105
|
Max, а если человеку нужна была траектория. Ведь не задан был вопрос: я не знаю, как убыстрить (замедлить) движение в конечной точке с физическим отскоком.
А о том, что трудности с синусом, кос... Я надеюсь, что по крайней мере, ответы на вопрос ему помож(г)ут ![]()
__________________
...и пролился на него свет, и выросла тень позади него... |
|
|||||
|
2 Alexey (G-fi) : а что же парню делать останется если я ему еще и посчитаю угол и скорость для того чтобы снаряд попал в эту точку????
ты ж читай: Цитата:
Фактически игра сделана уже.. даже вон попадание снаряда в домик обрабатывается... а идея у парня мне кажется неверная - ну шо за игра, если я тыкаю мышкой куда надо, а RANDOM мне все портит??? Игра сводится к тому что нужно дотыкаться пока RANDOM не даст нуль. пусть как в старой доброй игре - "Танковые сражения" меняет угол ствола и скорость вылета снаряда... а если хочет все-таки по своему сделать, то и флаг ему в руки! Да и не знаю я что за игру он делает...
__________________
Max. |
|
|||||
|
Гы, если наджо просто по дуге, есть вообще простой способ без хитрых формул.
делаешь мувик в котором шарик взлетает и падает моушн твином. Чтобы он это делал натурально, используй изинг. потом этот мувик горизонтально двигай уже обработчиком из одной точки в другую - это вообще просто сделать. надо только координату х увеличивать на расстояние между точками поделенное на количество шагов а расстояние рандомом разбавляешь. на обработчик самого шарика (который в мувике сидит) делаешь проверку на клиппинг с целью куда стреляешь.
__________________
Однозначно! |
|
|||||
|
ну в твоем способе есть сурьезный недочет!
1 - шарик всегда будет взлетать на одинаковую высоту 2 - если цель находится совсем рядом то стрелять навесом на опупенную высоту - не красиво!!! 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. |
![]() |
Часовой пояс GMT +4, время: 19:48. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|