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

wind53 27.09.2002 17:43

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

onClipEvent (enterFrame) {
_x = _x+(_parent._xmouse-_x)/40;
_y = _y+(_parent._ymouse-_y)/40;
}

Подскажите, плиз, что сюда надо добавить, чтобы мой треугольник, в зависимости от направления своего движения, поворачивался "мордочкой" по ходу движения.

Что-то связанное с _rotation, но что, не могу сам дойти.
Подскажите?

lizergil 27.09.2002 19:21

у тебя есть координаты миши и треугольника, след. по этим двум точкам строим мнимую прямую, определяем ее угол через основную тригонометрическую формулу треугольников в радианах, переводим в градусы и
фигура._rotation=degree;
удачи.

Nox Noctis 27.09.2002 19:28

Код:

onClipEvent (load) {
        rad = 180/Math.PI;
}
onClipEvent (enterFrame) {
        var dx = _parent._xmouse-_x;
        var dy = _parent._ymouse-_y;
        _rotation = Math.atan(dy/dx)*rad+(dx<0) * 180;
        _x += dx/40;
        _y += dy/40;
}


semma 27.09.2002 23:44

Вложений: 1
Вот помню я такое уже использовал. Вытащил из свиего архива (код взял где-то в исходниках по частям и сложил вместе).

но у Nox Noctis все намного проще

hellpioneer 28.09.2002 00:06

Функция поворота по двум точкам:

function f_rotate (x1, y1, x2, y2) {
tg = (y2-y1)/(x2-x1);
if (x2<=x1) {
cs = -1/Math.sqrt(1+((y2-y1)/(x2-x1))*((y2-y1)/(x2-x1)));
}
if (x2>=x1) {
cs = 1/Math.sqrt(1+((y2-y1)/(x2-x1))*((y2-y1)/(x2-x1)));
}
rot = ((Math.acos(cs)*360)/(Math.PI*2));
if (y2<=y1) {
rot = 0-rot;
}
return rot;
/* rot - Это и есть угол поворота. Он варьируется не от 0 до 360, а от -180 до 180. Издержки. :-) Потом пишешь просто прям на мувик:
_rotation = f_rotate (_x, _y, _xmouse, _ymouse);
*/
}


Через жопу, но работает стопудово. :D На скорую руку писал. :rolleyes:
Но у Nox Noctis все намного проще, как было сказано... просто выпендрица захотелось.... :-))))))




Спасиба, спасиба, спасиба......



:D :D :D

wind53 28.09.2002 12:32

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

hellpioneer 28.09.2002 12:39

:D Нет проблем... :D :D


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

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