Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Делаю игру HELP (http://www.flasher.ru/forum/showthread.php?t=39645)

vitocorleone 15.11.2002 12:32

Делаю игру HELP
 
Я делаю игру,нужно,чтобы шар летел по дуге(но не 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
фуф. Исходник есть, рабочий, но сырой больно...
Надеюсь, понятно объяснил...

Racer 15.11.2002 15:37

Это всё делается методом Тыка (такой был ученый).
на Enterframe шарика вещай обработчик на изменение его координат, а dx и dy высчитывай по формуле, которую можно извращать до неимоверности выше указанным методом :)

Max N Chubin_ 15.11.2002 16:10

Урок физики 8ой класс.
 
Вложений: 1
Давай подумаем головой.
У тебя есть тело, вылетающее с некой начальной скоростью из класса, ой из пушки под заданным углом.
Пренебрежем сопротивлением воздуха и ветром для упрощения задачи...
итак
.
. .
. .
. .
. .
*
//
_ //
! / !
_!____!____________________

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

2 Max N Chubin_
 
Max, а если человеку нужна была траектория. Ведь не задан был вопрос: я не знаю, как убыстрить (замедлить) движение в конечной точке с физическим отскоком. :)
А о том, что трудности с синусом, кос... ;)

Я надеюсь, что по крайней мере, ответы на вопрос ему
помож(г)ут :D

Max N Chubin_ 15.11.2002 18:48

уууууууу
 
2 Alexey (G-fi) : а что же парню делать останется если я ему еще и посчитаю угол и скорость для того чтобы снаряд попал в эту точку????
ты ж читай:
Цитата:

Я делаю игру...
а не Макс делает игру...
;) ;) ;)
Фактически игра сделана уже.. даже вон попадание снаряда в домик обрабатывается...
а идея у парня мне кажется неверная - ну шо за игра, если я тыкаю мышкой куда надо, а RANDOM мне все портит??? Игра сводится к тому что нужно дотыкаться пока RANDOM не даст нуль.
пусть как в старой доброй игре - "Танковые сражения" меняет угол ствола и скорость вылета снаряда...
а если хочет все-таки по своему сделать, то и флаг ему в руки! Да и не знаю я что за игру он делает...

Racer 15.11.2002 18:56

Гы, если наджо просто по дуге, есть вообще простой способ без хитрых формул.

делаешь мувик в котором шарик взлетает и падает моушн твином. Чтобы он это делал натурально, используй изинг.

потом этот мувик горизонтально двигай уже обработчиком из одной точки в другую - это вообще просто сделать. надо только координату х увеличивать на расстояние между точками поделенное на количество шагов а расстояние рандомом разбавляешь. на обработчик самого шарика (который в мувике сидит) делаешь проверку на клиппинг с целью куда стреляешь.

Max N Chubin_ 15.11.2002 19:47

Вложений: 1
ну в твоем способе есть сурьезный недочет!
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 выходных!
Успехов!


Часовой пояс GMT +4, время: 20:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.