Форум 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=59342)

Килька 14.06.2004 14:47

Движение относительно курсора
 
Приветствую.
Делаю я значит так.
Цитата:

y = 123._y-_ymouse;
x = 123._x-_xmouse;
angleA = Math.atan2(y, x);
degrees = angleA/(Math.pi/180);
setProperty("123", _rotation, degrees);
123 соответственно название клипа.
Объект крутится относительно мыши, как теперь сделать, чтобы он ходил тоже относительно нее.
Т.е. Нажимаю я вперед и объект идте не вверх, а к мыши. Назд от нее и соответственно вправо и влево.
Только в поиск меня не посылаейте, я тем уже был :p

sergwizard 14.06.2004 17:47

Код:

posX = mc._x;
posY = mc._y;
this.onMouseDown = function(){
        posX = _xmouse;
        posY = _ymouse;
}
this.onEnterFrame = function(){
y = mc._y -_ymouse;
x = mc._x -_xmouse;
angleA = Math.atan2(y, x);
degrees = angleA/(Math.pi/180);
mc._rotation = degrees;
mc._x-=(mc._x-posX)/10;
mc._y-=(mc._y-posY)/10;
}

Не надо давать клипам имена, состоящие из цифр.

Килька 14.06.2004 20:28

Не выходит что-то. Может где не там пишу.
Значит создаю я клип - player.
В этом клипе помещен еще один клип - play (обзываю его как в коде - mc)
Пишу далее твой код. Проверяю, все крутится, как надо, а как теперь сделать, чтобы ходил? Куда код ходьбы помещать и может быть он какой-нибудь не такой. Я делаю так
Код:

onClipEvent (enterFrame) {
        if (Key.isDown(87)) {
                _y -= 3;
        }

Ну и другие кнопки.
Все равно player идет не относительно мыши, а просто вверх, вниз, вправо и влево.
Кто подскажет, может для этого по-другому надо програмить ходьбу?

Килька 14.06.2004 20:33

Вот блин :)
Еще раз посмотрел код.
Sergwizard, ты меня неправильно понял. Да и я сразу че-то не догнал. Мне надо, чтобы не при нажатии левой кнопки мыши объект перемещался туда, а чтобы он двигался относительно курсора. Например нажимаю я на кнопку вперед и обект идет в сторону мыши. Т.е. можно ли мистему координат поменять. Вначале я уже писал, как обект поворачиваю, а можно ли вместе с ним координаты повернуть?

Елё 14.06.2004 22:06

Систему координат конечно можно повернуть, засунув двигаемый мувик внутрь вращаемого. Но тогда получатсья неприятный эфекты при вращении (не относительно центра вращение будет)
Так что лучше не парится и при движении вперед смещать в зависимости от угла:
this._x += Math.cos(this.rotation/180*Math.pi);
this._y += Math.sin(this.rotation/180*Math.pi);

silin 14.06.2004 22:56

Вложений: 1
не понятно, зачем надо крутить систему координат - двигай свой мув в сторону мыши, как sergwizard написал, но только по нажатию клавиш

sergwizard 15.06.2004 00:19

Вложений: 1
Что-то я тебя не пойму. Что такое "кнопка вперед"? При чем здесь Key(87)? Насколько я помню, это буква W. Ну, если ты так хочешь, то - пожалуйста. Но, мне кажется, что второй вариант в приаттаченом зипе – более интересный и функциональный.

Килька 15.06.2004 00:42

silin, пасиба большое :) Вправо, влево постараюсь сам догнать.

sergwizard, у меня твой архив не распаковывается.

Килька 15.06.2004 01:48

Вот блин. Он убыстряется и умедляется относительно того на каком расстоянии от него курсор, а нужно, чтобы все двигалось на 1px. Вот поэтому я и спрашивал, как систему координат можно поменять. Или по-другому пожно сделать, еще как?
Заранее спасибо.

sergwizard 15.06.2004 04:35

Если нужно равномерное движение, то код такой:
Код:

this.onEnterFrame = function(){
        var speed = 2;
        y = mc._y -_ymouse;
        x = mc._x -_xmouse;
        mc._rotation = Math.atan2(y, x)/(Math.PI/180)
                if(Key.isDown(38)){
                mc._x -= Math.cos(Math.atan2(y, x)) * speed;
                mc._y -= Math.sin(Math.atan2(y, x)) * speed;
                }
                if(Key.isDown(40)){
                mc._x += Math.cos(Math.atan2(y, x)) * speed;
                mc._y += Math.sin(Math.atan2(y, x)) * speed;
                }
}



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

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