PDA

Просмотр полной версии : Стрельба из пушки (cannon)


maldude
11.06.2008, 19:49
Здраствуйте, такой вопрос:
Как сделать стрельбу из пушки чтобы на пулю действовала сила гравитации? Вот как сдесь (http://play.yandex.ru/game.xhtml?game_id=73)

Ostgur
11.06.2008, 22:18
первый пример смотрите (http://ru.wikipedia.org/wiki/Олимпиадные_задачи_по_физике)

maldude
12.06.2008, 11:37
Что то мне непомогло :((

Там с двумя телами, и толком непонятно как указать вектор ускорения.... А у вас случайно нет примера такой програмы?

Psycho Tiger
12.06.2008, 13:41
Логика:
Заводим переменную ymov
В каждом кадре _y клипа += ymov
После этого в каждом кадре ymov+=1 (1 - гравитация)
При выстреле ymov=-20 (ибо координаты первернуты по отношению к декартовым) 20 - начальная сила выстрела.

maldude
12.06.2008, 14:13
ну это ведь только гравитация... а как сделать чтобы он летел куда то как в этой игре (http://play.yandex.ru/game.xhtml?game_id=73)

Psycho Tiger
12.06.2008, 20:23
Его скорость по _х не изменяется.
Прибавь к той логике сверху _x+=xmov в каждом кадре.
Как крутить голову:
Рисуем прямоугольный треугольник, один катет ymov, другой xmov. Нам нужен тангенс угла, значит

Math.atan2(ymov,xmov)*180/Math.Pi

vitlance
12.06.2008, 22:57
gravity = 3;
bullet.vector = {x:0,y:0};
onEnterFrame = function() {
bullet._x += bullet.vector.x;
bullet._y -= bullet.vector.y;
bullet.vector.x *= .96;
bullet.vector.y *= .96;
bullet.vector.y -= gravity;
bullet._rotation = Math.atan2(bullet.vector.x, bullet.vector.y)/(Math.PI/180);
}
// Сообщаем любой вектор
bullet.onRelease = function () {
bullet.vector = {x:-20,y:10};
};

Psycho Tiger
13.06.2008, 14:25
Пардон, не согласен.
bullet._rotation = Math.atan2(bullet.vector.x, bullet.vector.y)/(Math.PI/180);
Math.atan2(y,x) - значит,

Math.atan2(bullet.vector.y,bullet.vector.x);