Форум 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)
-   -   Реализация "похищающего" луча НЛО с помощью action script (http://www.flasher.ru/forum/showthread.php?t=84188)

fromotherplanet 25.08.2006 16:56

спасибо. но кажется проблема не в этом...:(

whiteRed 25.08.2006 17:01

ну тогда опиши свой алгоритм словами а то я не пойму че ты сделать пытаешься

fromotherplanet 25.08.2006 17:06

Щас будет...

fromotherplanet 25.08.2006 17:32

Код:

_root.pluch._rotation = Math.atan((_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse))*180/Math.PI;//чтобы луч поворачивал за мышью на 180
if (_root.apt._y<-_root.apt._x*(_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse)*(-2) & _root.apt._y>-_root.apt._x*(_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse)*2) {//задаём 2 графика, по середине которых будет похищающий луч
        _root.apt.d = _root.apt._x*_root.apt._x+_root.apt._y*_root.apt._y;//_root.apt.d - квадрат диагонали от начала координат(для примера, на самом деле будет от начала луча) к аптечки
        _root.apt.d -= 150;//уменьшаем её
        _root.apt._x = Math.sqrt(_root.apt.d-_root.apt._y*_root.apt._y);//вычисляем _х аптечки
        _root.apt._y = _root.apt._x*(_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse);//и _y
}


whiteRed 25.08.2006 17:55

кажется я понял... ты хочешь сделать так: луч поворачивается за мышкой, если аптечка попала в луч, то она приближается на 150 пикселей... так?

etc 25.08.2006 18:09

я же говорил, что гадалки в отпуске

fromotherplanet 25.08.2006 18:26

почти, двигаться он щдолжен постоянно, и равномерно, а 150 или 1 - уже значения не имеет, поменять в любой момент можно....

fromotherplanet 25.08.2006 18:27

Цитата:

Сообщение от __etc
я же говорил, что гадалки в отпуске

Может быть...:taunt:

whiteRed 25.08.2006 18:31

...почувствовал себя гадалкой...:confused:

whiteRed 25.08.2006 18:35

Код:

повернули луч;
var aptRot = Math.atan2(apt._y-pluch._y, apt._x-pluch._x)*180/Math.PI; //угол от луча к аптечке
//находим разницу углов от луча к аптечке и собственно луча
var dRot = Math.abs(aptRot - pluch._rotation);
if(dRot>180) dRot=Math.abs(dRot-360);
if(dRot<половина_угловой_ширины_луча){
//приближаем аптечку на 10%
    apt._x = apt._x*0.9 + pluch._x*0.1;
    apt._y = apt._y*0.9 + pluch._y*0.1;
}



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

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