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

crocodilecc 12.06.2016 20:20

Поворот
 
Здравствуйте!

Есть игра.. в игре есть персонаж, который двигается по клику мышки (куда кликнуть курсором, туда он и "пойдет"). Проблема в том, что персонаж "летает", а не ходит.
Нужно как-то сделать так, чтобы персонаж поворачивался под нужным углом (в какую сторону, так и поворачивался).
С рисунком не проблема, всё уже есть..

Не подскажите, как сделать? Нужно сделать так, чтобы персонаж поворачивался в ту сторону, куда "идёт" (код требуется, графика есть).
AS 2.0

Заранее всем спасибо!

dark256 12.06.2016 20:26

Есть две точки, есть тригонометрические функции и у перса есть _rotation...
Не наблюдаю проблемы ;)

Код AS1/AS2:

                var yKat = _ymouse - pers._y
                var xKat = _xmouse - pers._x
                var angle = Math.atan2( yKat ,xKat  ) + Math.PI
 
                pers._rotation = angle*180/Math.PI


crocodilecc 12.06.2016 20:59

Цитата:

Сообщение от dark256 (Сообщение 1194785)
Есть две точки, есть тригонометрические функции и у перса есть _rotation...
Не наблюдаю проблемы ;)

Код AS1/AS2:

                var yKat = _ymouse - pers._y
                var xKat = _xmouse - pers._x
                var angle = Math.atan2( yKat ,xKat  ) + Math.PI
 
                pers._rotation = angle*180/Math.PI


Спасибо! А можно поподробнее про _rotation у перса и сам код?
Мой персонаж сейчас стоит прямо, "видов с другой стороны" в него не заложено, потому что я не совсем понимаю, как так сделать.

p.sЯ просто достаточно плох в AS, поэтому такие нелепые вопросы. Буду благодарен)
p.p.s У меня по вашему коду что-то заработало, но не совсем так. Персонаж то пропадает, то просто переворачивается на 360*

dark256 12.06.2016 21:24

_ymouse - координата мыши.
Переделайте получение координат и рассчет угла на:

onMouseDown (Mouse.onMouseDown event listener)
onMouseDown = function() {}

Notified when the mouse is pressed. To use the onMouseDown listener, you must create a listener object. You can then define a function for onMouseDown and use addListener() to register the listener with the Mouse object, as shown in the following code:

Код AS1/AS2:

var someListener:Object = new Object();
someListener.onMouseDown = function () {
      // поворачиваем перса
};
Mouse.addListener(someListener);

"поподробнее про _rotation" - хм.. Это угол поворота клипа......
Если у вас вид сверху - то этим все сказано. Если изометрии или не знаю что там и как - то тогда сказать пока и нечего :)

crocodilecc 12.06.2016 21:36

Цитата:

Сообщение от dark256 (Сообщение 1194787)
_ymouse - координата мыши.
Переделайте получение координат и рассчет угла на:

onMouseDown (Mouse.onMouseDown event listener)
onMouseDown = function() {}

Notified when the mouse is pressed. To use the onMouseDown listener, you must create a listener object. You can then define a function for onMouseDown and use addListener() to register the listener with the Mouse object, as shown in the following code:

Код AS1/AS2:

var someListener:Object = new Object();
someListener.onMouseDown = function () {
      // поворачиваем перса
};
Mouse.addListener(someListener);

"поподробнее про _rotation" - хм.. Это угол поворота клипа......
Если у вас вид сверху - то этим все сказано. Если изометрии или не знаю что там и как - то тогда сказать пока и нечего :)

Спасибо!:) Постараюсь всё сделать.



Добавлено через 5 часов 41 минуту
Цитата:

Сообщение от dark256 (Сообщение 1194787)
_ymouse - координата мыши.
Переделайте получение координат и рассчет угла на:

onMouseDown (Mouse.onMouseDown event listener)
onMouseDown = function() {}

Notified when the mouse is pressed. To use the onMouseDown listener, you must create a listener object. You can then define a function for onMouseDown and use addListener() to register the listener with the Mouse object, as shown in the following code:

Код AS1/AS2:

var someListener:Object = new Object();
someListener.onMouseDown = function () {
      // поворачиваем перса
};
Mouse.addListener(someListener);

"поподробнее про _rotation" - хм.. Это угол поворота клипа......
Если у вас вид сверху - то этим все сказано. Если изометрии или не знаю что там и как - то тогда сказать пока и нечего :)

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

dark256 13.06.2016 09:10

Угол вы вычислили. Делите на 16, округляете и получаете нужный фрэйм.

crocodilecc 14.06.2016 16:01

Цитата:

Сообщение от dark256 (Сообщение 1194794)
Угол вы вычислили. Делите на 16, округляете и получаете нужный фрэйм.

Скажите, а реально каким-то образом сделать, чтобы на каждую сторону (для поворота 360) была своя картинка?

В примере для AS 3.0 в коде задано 8 различных направлений (east, south-east ...), а в самом персонаже 16 кадров. В действии персонаж может поворачиваться на все 360*, используя эти 16 кадров. Интересует, возможно ли как-то таким же образом осуществить это на AS 2.0 ?

dark256 14.06.2016 19:52

Собственно точно также все и можно.
Если только там не задействованы 3Д библиотеки.


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

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