![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
задача простая:
стоит пушка, ствол под определенным углом к горизонту.. выбераем силу выстрела.. (как в игрушке с 2я башнями).. предположим что по оси Х сопротивления нет.. есть только сила тяжести.. как сделать нормальный полет снаряда? простыми +\- у меня выходит полная фигня.. думаю тут нужно применить SIN , COS.. но что именно не как не разбирусь.. и полет снаряда получается какой то дискретный.. как сделать плавный полет? Мои жалкие попытки: ball._x = ball._x + eval("castle"+current).ang0._rotation; ball._y = ball._y - sila; sila = sila - 1;
__________________
WebInside.RU Последний раз редактировалось evgenz; 30.09.2005 в 00:29. |
|
|||||
|
Тут на сколько я понимаю рисуется парабола...
Так вот вопрос как нарисовать параболу правильно.. когда пушка под углом 45, 30, 10 итд.. пушка же движется... и еще выберается сила выстрела..
__________________
WebInside.RU |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Тогда бери полную версию с учетом сопротивления воздуха
// скорость
u0 = 20;
// ускорение свободного падения
g = .98;
// угол стрельбы
a = 40;
// сопротивление воздуха
k = 0.01;
//
this.lineStyle (0, 0xFF0000);
this.onEnterFrame = function () {
t++;
z = (1 - Math.pow (Math.E, -k * t)) / k;
x = u0 * Math.cos (a * Math.PI / 180) * z;
y = (u0 * Math.sin (a * Math.PI / 180) + g / k) * z - g * t / k;
if (y < 0) {
delete this.onEnterFrame;
}
if (t == 1) {
this.moveTo (x, -y);
} else {
this.lineTo (x, -y);
}
};
|
|
|||||
|
Примного благадарен!
То что надо!
__________________
WebInside.RU |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
у меня в древних уроках описан простой принцип разделения траекторий на составляющие.
там и математику-то знать не надо. например, дано : угол поворота angle начальная скорость speed сила притяжения gravitation если выстрелить без гравитации, то снаряд улетит по прямой под углом angle. стреляем: this.baBahhhh = function (angle, speed) { var angle_rad = angle*(Math.PI/180) // раскладываем по осям: var xspeed = Math.cos(angle)*speed var yspeed = Math.sin(angle)*speed this.shell_mc.onEnterFrame = function () { this._x+=xspeed this._y+=yspeed } } - улетел снарядик по прямой без гравитации вторая составляющая- гравитация, ее добавить просто: this.baBahhhh = function (angle, speed) { // added var gravity = 1 var angle_rad = angle*(Math.PI/180) var xspeed = Math.cos(angle)*speed var yspeed = Math.sin(angle)*speed this.shell_mc.onEnterFrame = function () { this._x+=xspeed this._y+=yspeed // added this._y+=gravity } } можно добавить и сопротивление среды (можно и четверга, но не нужно, хехе), оно будет влиять на скорость: this.baBahhhh = function (angle, speed) { var gravity = 1 // added var friction = .99 var angle_rad = angle*(Math.PI/180) this.shell_mc.onEnterFrame = function () { // added speed*= friction // moved var xspeed = Math.cos(angle)*speed var yspeed = Math.sin(angle)*speed this._x+=xspeed this._y+=yspeed this._y+=gravity } } - вот так раскладывая на составляющие очень просто и легко сделать любую траекторию и управлять ею. но самое главное - понимать, что делаешь... - скрипт я не тестил, писал прям тут, так что возможны ашипки. |
|
|||||
|
angle, speed, gravity - константы
var yspeed = Math.sin(angle)*speed => yspeed тоже константа... this._y+=gravity - тоже константа... ... не думаю что это работает...
__________________
WebInside.RU |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
в программировании думать не надо.
сиди, да программируй. а когда начинаешь думать, начинается ботва типа той, что ты написал. ты просто попробуй... |
|
|||||
|
Mojet , ya 4ego to ne poniamaiu , no kuda nujno vstavliati etot skript ???
Ps: mne prosto toje etot dvijok nujen ... mojete dati fla file ??? ![]() |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
вставить в рут
но сделать мувик и назвать его shell_mc |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|