Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Приземление (http://www.flasher.ru/forum/showthread.php?t=59749)

Джерк 23.06.2004 16:14

Приземление
 
Вложений: 1
Примерно месяц назад я задавал вопрос про прыжок. В результате я сам сделал прыжок, но вот при приземлении шар "проваливается" в поверхность, а потом очень быстро взлетает вверх так, что его не видно на экране. Мне надо чтобы шар не проваливался в поверхность и не отскакивал от нее. Пожалуйста, кому не лень, посмотрите следующий файл и напишите в чем я ошибся. :confused:

Елё 23.06.2004 18:27

Цитата:

Пожалуйста, кому не лень, посмотрите следующий файл и напишите в чем я ошибся
Это зависит от того что ты хотел сделать ;-)
ЧТо бы шар не проваливался достаточно написать _y = 250 :-)


Если серьёзно то тут как минимум две ошибки
1. Поскольку onEnterFrame - это дискретное время, то с ускорением связываться нельзя
2. hitTest может не работать поскольку шарик за один кадр может проскочить линию

Я бы сделал так:


Код:

onClipEvent (load)
{
        vx = 0;
        vy = 0;
        dx = 1; // ускорение по клавишам
        dxt = 0.5; // ускорение трения
        dyp = -10; // ускорение при прыжке
        dyg = 1; // ускорение свободного падения
}
onClipEvent (enterFrame)
{
        // тут ускоряем от клавиатуры
        if (Key.isDown(Key.RIGHT))
                vx += dx;
        else if (Key.isDown(Key.LEFT))
                vx -= dx;
        // под этим ифом действует трение
        if(vx > 0)
                if(vx < dxt) vx = 0;
                else vx -= dxt;
        else
                if(vx > -dxt) vx = 0;
                else vx += dxt;
        // c х рахобрались
        // теперь с Y
        // учитываем ускорение свободного падения
        vy += dyg;
       
        _y += vy;
        _x += vx;
        if(_y >=  235)
        {
                _y = 235;
                vy = 0;
               
                if (Key.isDown(Key.UP))
                        // прыжок
                        vy += dyp;
        }
}



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

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