Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   прыгающий мяч (http://www.flasher.ru/forum/showthread.php?t=66046)

F())( 25.06.2005 20:25

прыгающий мяч
 
Вложений: 1
Проблема в траектории движения... Посмотрите , please.
После условия столкновения с полом(значение по y), мяч не движется в левый верхний угол.... Не понимаю, по формулам кинематики все верно :confused:

_root.ball._x=150;
_root.ball._y=0;
t=0;
x0=10;
y0=1;
v0=18;
a=10;
v1=v0*0.8;

_root.onEnterFrame=function() {
vy=v0*t+(a*t*t)/2;
t=t+0.6;
_root.ball._x=x0+v0*t;
_root.ball._y=y0+vy*t+(a*t*t)/2;

if (_root.ball._y>400) { //при падении на землю
t=0;
_root.ball._x=z; //точка падения по x(правильно ли)
_root.onEnterFrame=function() {
t=t+0.5;
vy2=-vy*0.8;
_root.ball._x=z+v0*t;//на деле должно быть движение в правый верхний угол, а на деле лажа
_root.ball._y= 400+vy*t-(a*t*t)/2;
_root.ball._rotation+=10; // вращение
}
}
}

Nirth 25.06.2005 20:35

честно говоря не въехал в код...но насколько я понимаю логику все происходит из за того что ты переписываешь второй раз onEnterFrame.
Код:

_root.ball._x = 150;
_root.ball._y = 0;
t = 0;
x0 = 10;
y0 = 1;
v0 = 18;
a = 10;
v1 = v0 * 0.8;
_root.onEnterFrame = function() {
        vy = v0 * t + (a * t * t) / 2;
        t = t + 0.6;
        _root.ball._x = x0 + v0 * t;
        _root.ball._y = y0 + vy * t + (a * t * t) / 2;
        if (_root.ball._y > 400) {
                trace("fall");
                //при падении на землю
                t = 0;
                _root.ball._x = z;
                //точка падения по x(правильно ли)
                t = t + 0.5;
                vy2 = -vy * 0.8;
                _root.ball._x = z + v0 * t;
                //на деле должно быть движение в правый верхний угол, а на деле лажа
                _root.ball._y = 400 + vy * t - (a * t * t) / 2;
                _root.ball._rotation += 10;
                // вращение
        }
};

а вот чтобы он двигался в другой угл надо еще повозиться

Штрек 25.06.2005 22:47

учитесь создавать контейнер для обработчика Ef....

F())( 26.06.2005 09:51

штрек раскажи побробнее если можно :d

SaFeR 26.06.2005 18:00

Код:

this.ball._x;
// Xo
this.ball._y;
// Yo
Vx = 3;
Vy = 0;
gravity = 1;
this.onEnterFrame = function() {
        Vy += gravity;
        this.ball._x += Vx;
        this.ball._y += Vy;
        this.ball._rotation += 10;
        if (this.ball._y>400) {
                Vy *= -1;
        }
};

Попробуй сюда добавить законы кинематики

F())( 26.06.2005 20:48

Вложений: 1
Отскок сделал. исходник
Но Как сделать дальнейшее затушающее движение мяча? Высота подьемa должна постепенно снижаться...
Стоит ли применять логические операторы, с определенной сonst при достижении которой мяч будет двиться равноускоренно вниз,
потом опять условие о столкновении с полом... и так до полной потери скорости.
Если ли более простое решение? :( :(

Nirth 26.06.2005 20:58

Насчет более простых движений Jobe Makar в своей книге Macromedia® Flash™ MX Game Design Demystified
советует не использовать точных физических законов, а делать их эмуляцию
примерно так
Код:

ymov = 0;
//set gravity
gravity = 2;
decay = .95;
_root.onEnterFrame = function() {
        ymov += gravity;
        ymov *= this.decay;
        ball._y += ymov;
        if (ball._y > 400) {
                ball._y = 400;
                ymov *= -1;
        }
};

исходник посмотрю позже, если тебе еще нужна будет помощь.

F())( 26.06.2005 22:42

Nirth дай исходник если не трудно. Очень инстересно..
Вы упоминули Macromedia® Flash™ MX Game Design Demystified - она существует в эл. виде, если да где скачать? :)

Nirth 26.06.2005 22:46

Книжки нужно покупать на этом форуме запрещенно раздавать линки, поищи на других.

а насчет исходника, у меня нету=) я просто навоял код,
создай на сцене мувик с именем ball и положи код в первый кадр и будет тебе счастье

SaFeR 26.06.2005 23:12

Вложений: 1
Вот пример из этой книги падающего вертикально мяча.
остаётся добавить перемещение по оси х


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

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