НОВЫЕ ИГРЫЛУЧШИЕ ИГРЫФОРУМ 646 Всего сообщений: 305037
+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Повороты персонажа

Автор Тема: Повороты персонажа  (Прочитано 3332 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Повороты персонажа
« : 20 Октября 2009, 19:24:22 »
Наверняка большинство видело как в играх при нажатии мышкой ваш персонаж поворачивается к вам спиной(боком, передом, полубоком) и идет по экрану. Как сделать так чтобы он реагировал на сторону, в которую ему надо развернутся?
P.S. Примерно восемь направлений: по диагоналям, горизонталь и вертикаль.
Единственное до чего додумался это прикрепить к нему восемь клипов по кругу, реагирующих на нажатие. Если кто-то знает как сделать по другому, подскажите пожалуйста.

Re: Повороты персонажа
« Ответ #1 : 23 Октября 2009, 14:49:44 »
Можешь разбить экран на области и опрашивать координаты курсора. Например, если у нас ролик 500 на 500 пикселов и персонаж в центре, то /* Код*/ будет выполняться когда курсор в правой нижней четверти экрана.
if ((_xmouse > 250) && (_ymouse > 250)) {/* Код*/}
Для восьми направлений придется усложнять условия. Из школы знаем что линия описывается f(x) = ax + b. Этими линиями разбивай экран на области.

Re: Повороты персонажа
« Ответ #2 : 23 Октября 2009, 16:35:55 »
Если бы все было так просто.
У меня персонаж должен быть не в центре, а двигаться по экрану, к тому же слева, справа, снизу, сверху, угол действия кода должен быть равен в районе 45 градусов.(ну и по диагоналям соответственно тоже).
В твоем случае, когда if ((_xmouse > 250) && (_ymouse > 250)) {/* Код*/}
и персонаж будет в нижнем правом углу, а я кликаю чуть выше, он не развернется.
Тут скорее всего нужны относительные координаты.

P.S. Или я что-то не так понял?



Re: Повороты персонажа
« Ответ #3 : 23 Октября 2009, 17:05:03 »
Вот тебе подсказка:
onEnterFrame = function(){
   dx = _xmouse - mc._x;
   dy = _ymouse - mc._y;
   
   if((dx < dy)&&(dy > 0)){out = "1"} else {out = "false"};
   
}
Смотри вложенный ролик. Линии в ролике нарисованы просто для наглядности. Как видишь, я ограничил область наклонной линией (Условие - dx < dy).
Относительность координат реализована (черный круг- mc).


Добавлено через: 13 мин. 1 сек

Почитай школьный курс геометрии. Для решения твоей задачи могут потребоваться функции класса Math. Например модуль, возведение в квадрат, может даже тригонометрические функции.

Вот короче:
onEnterFrame = function(){
dx = _xmouse - mc._x;
dy = _ymouse - mc._y;

if((dx > dy)&&(dy > 0)&&(dx > 0)){out = "1"}
if((dx < dy)&&(dy > 0)&&(dx > 0)){out = "2"}
if((Math.abs(dx) < dy)&&(dy > 0)&&(dx < 0)){out = "3"}
if((Math.abs(dx) > dy)&&(dy > 0)&&(dx < 0)){out = "4"}
if((Math.abs(dx) > Math.abs(dy))&&(dy < 0)&&(dx < 0)){out = "5"}
if((Math.abs(dx) < Math.abs(dy))&&(dy < 0)&&(dx < 0)){out = "6"}
if((dx < Math.abs(dy))&&(dy < 0)&&(dx > 0)){out = "7"}
if((dx > Math.abs(dy))&&(dy < 0)&&(dx > 0)){out = "8"}
}
« Последнее редактирование: 23 Октября 2009, 17:39:44 от zombieambulance »

Re: Повороты персонажа
« Ответ #4 : 23 Октября 2009, 17:53:46 »
Спасибо большое.

+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Повороты персонажа