Форум 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 12:12

Реализация "похищающего" луча НЛО с помощью action script
 
хочу сделать небольшую игрушку про нло....
Не получается сделать "похищающий" луч....Луч управляемый, то есть "светит" в сторону мыши, а исходит из самогоНЛО...
Например, хочу сделать , чтоб этим лучем можно было притянуть аптечку,
нарисовал, для начала, просто линию- мувик(назвал pluch), и апточку, тож, мувик(назвал apt). написал, для начала такой код:
Код:

_root.pluch._rotation=Math.atan((_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse))*Math.PI*18;
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){_root.apt._x-=1;_root.apt._y=_root.apt._x*(_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse);}

и не чего не получилось...:( Помогите пожалуйста: Что не правильно? И как его лучше сделать...?:confused:

fromotherplanet 25.08.2006 13:56

Так что, никто , ничего не подскажет?:( :(

etc 25.08.2006 14:31

fromotherplanet, дежурные гадалки в отпуске. Чего и куда там у тебя двигается известно только им, но они в отпуске.

fromotherplanet 25.08.2006 15:24

__etc, твои слова бессмысленны... если нечего сказать или сам не знаешь мог б помолчать (я и о других твоих сообщениях..)...

etc 25.08.2006 15:27

fromotherplanet, если бы мои слова были бессмысленны, то тебе бы уже ответили по теме.

fromotherplanet 25.08.2006 15:36

Цитата:

Сообщение от fromotherplanet
(я и о других твоих сообщениях..)

читай лучше, и не пиши снова, в ответ , бессмысленные слова...

fromotherplanet 25.08.2006 16:03

немного переделал код, но всё осталось так-же
Код:

_root.pluch._rotation = Math.atan((_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse))*Math.PI*18;
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) {
        _root.apt.d = _root.apt._x*_root.apt._x+_root.apt._y*_root.apt._y;
        _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);
}

Не пойму, что не так...?
когда меняешь угол луча расстояние между аптечкой и началом луче меняется..Из за чего?
Я вроде точно задал 2 графика между которыми и есть похищающий луч, авсё равно чтото не провильно...

etc 25.08.2006 16:14

& на && замени

fromotherplanet 25.08.2006 16:29

Всё равно не получается..

whiteRed 25.08.2006 16:44

Цитата:

Код:

_root.pluch._rotation = Math.atan((_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse))*Math.PI*18;

вообще чтобы перевести радианы в градусы нужно
Код:

_root.pluch._rotation = Math.atan((_root.pluch._y-_ymouse)/(_root.pluch._x-_xmouse))*180/Math.PI;

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;
}


fromotherplanet 25.08.2006 18:36

Ну так не поможешь? Может есть какие-нибудь мысли, как сделать, чтоб всё заработало?

fromotherplanet 25.08.2006 18:37

прости, написали одновременно...

fromotherplanet 25.08.2006 18:41

Спасибо большое!!!

fromotherplanet 25.08.2006 18:48

ещё бы сделать чтоб если уж поймал аптечку в луч, то чтоб она вместе с ним перемещалась...

Nirth 25.08.2006 19:12

и еще это ВайтРед перепиши мне плиз ас2либ на ас3, мне как то влом.

whiteRed 28.08.2006 10:25

Цитата:

Сообщение от Nirth
и еще это ВайтРед перепиши мне плиз ас2либ на ас3, мне как то влом.

человек нормально попросил, у меня было свободное время, почему бы ему не помочь? помоему, для этого форум и создан. :mad:

fromotherplanet 28.08.2006 14:02

Цитата:

Сообщение от whiteRed
человек нормально попросил, у меня было свободное время, почему бы ему не помочь? помоему, для этого форум и создан. :mad:

Совершенно согласен.


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

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