Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   движение по направлению клипа. (http://www.flasher.ru/forum/showthread.php?t=97954)

Денис Фет 03.07.2007 18:36

движение по направлению клипа.
 
Подскажите пожалуйста начинающему флешеру. Есть некий мувклип lodka, который нужно заставить плавать по поверхности озера. Все это вид сверху. Притом при нажатии кнопок влево и вправо лодка должна менять направление (это я понял что делается просто через изменения значения _rotation). А вот при нажатии вверх лодка должна плыть в ту сторону, в которую направлена ее корма (т.е. в ту сторону в которую она повернута) с неким ускорением (у меня пока стоит вверх). При нажатии клавиши вниз ускорение должно падать и лодка должна остановиться. Лодка не должна выплыть за пределы экрана. Хотелось бы еще наличие энерции при движении, повороте и остановке. Вот собственно и все. Наверняка для вас эта задачка окажется не сложной, но меня она поставила в тупик :-( Код у меня пока написан самый что ни наесть простой:

Код:

onClipEvent (enterFrame) {
        if (Key.isDown(Key.UP))
        {
                _y = _y-2;
        }
        if (Key.isDown(Key.DOWN))
        {
                _y = _y+2;
        }
        if (Key.isDown(Key.LEFT))
        {
                _rotation = _rotation-3;
        }
        if (Key.isDown(Key.RIGHT))
        {
                _rotation = _rotation+3;
        }
}

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

divinus 03.07.2007 18:54

Денис Фет, физику учи дорогой... а точнее кинематику... :) ну и геометрия тебе в помощь...

D12 03.07.2007 19:33

Код:

//////////////////////////////////
/////создаём машинку =)///////////
//////////////////////////////////
this.createEmptyMovieClip("mc", 1);//здесь мы создаенм муви-клип оболочку, это не так обязательно просто изврат =) вы можете использовать свой обьект нарисованный в мувике дав ему на сцене имя //"mc"
with (this.mc) {//здесь мы рисуем то что будет в нашей оболочке муви-клипе с именем "mc"
        lineStyle(2, 0x000000, 100);
        beginFill(0x6633CC);
        moveTo(-25, -25);
        lineTo(-25, -25);
        lineTo(25, -25);
        lineTo(25, 25);
        lineTo(-25, 25);
        endFill();
}
///////////////////////////////////
///////задаем координаты на поле///
///////////////////////////////////
this.mc._x = 275;//здесь задаем первоначальные координаты расположения на по оси икс
this.mc._y = 200;//здесь по игрику
this.mc._rotation = -90;//этой командой мы задаем поворот нашей машинки если мы этого несделаем то она может ездить боком =) если машинка нарисована не програмно это необязательно развернуть можно вручную
////////////////////////////////////
////////задаём управление///////////
////////////////////////////////////
this.mc.onEnterFrame = function() {//этим мы создаем блок в котором будем писать команды которые будет выполнять наша машинка
        if (Key.isDown(Key.RIGHT)) {//этой командой мы крутим машинку вправо
                this._rotation += 3;//_rotation значит вращать
        }
        if (Key.isDown(Key.LEFT)) {//этой командай задаем поворот влево
                this._rotation -= 3;
        }
        if (Key.isDown(Key.UP)) {//задаем движение вперед
                this._y += 4*Math.sin(this._rotation*(Math.PI/180));//вычисляем синус
                this._x += 4*Math.cos(this._rotation*(Math.PI/180));//вычисляем косинус угла поворота машинки переводя его в радианы,так же обратите внимание число 4 отвечает за величену радиуса поворота тоесть тем выше число тем больше радиус
        }
        if (Key.isDown(Key.DOWN)) {//задаем движение назад при этом скорость уменьшаем в 2 раза
                this._y -= (4*Math.sin(this._rotation*(Math.PI/180)))/2;
                this._x -= (4*Math.cos(this._rotation*(Math.PI/180)))/2;
        }
};

:)

Денис Фет 03.07.2007 20:06

Цитата:

Сообщение от divinus
Денис Фет, физику учи дорогой... а точнее кинематику... :) ну и геометрия тебе в помощь...

правду говоришь, помниться еще в школе мне говорили преподаватели учи физику учи, а я все не учил и не учил :-)

Денис Фет 03.07.2007 20:16

D12 огромное спасибо, теперь картина для меня стала намного яснее. Код работает.


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

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