![]() |
Движение по диагонали
Добрый вечер! У меня есть код движение некого объекта, которым можна управлять с помощью клавиатуры:
Код AS3:
|
У этого кода нет недостатков, он работает так, как и должен работать.
|
Попробуйте запоминать нажатые клавиши, а по энтерфрейму проверять их и двигать объект.
Т.е. код движения будет приблизительно таким: Код AS3:
|
Код AS3:
|
Кстати во всех подобных реализациях движения по диагонали не учитывается общий модуль скорости. Если при такой реализации двигаться по диагонали, то движение по модулю будет быстрее, чем движение (по модулю) по каждой из осей в отдельности. По отдельным осям скорость будет SPEED, а по диагонали будет корень из двух на SPEED
Поэтому нужно заиметь константу SPEED_MAGNITUDE, и по ней вычислять ONE_AXIS_SPEED_MAGNITUDE, которая будет равна SPEED_MAGNITUDE * корень из двух делить на два. Если движемся по диагонали, двигаем обе координаты со скоростью ONE_AXIS_SPEED_MAGNITUDE, а если горизонтально или вертикально, то со скоростью SPEED_MAGNITUDE Потом проверять, нажаты ли обе кнопки, и проверять простым перебором (да, это долго) все варианты нажатий. И еще можно проверять через atan2 куда двигать. У меня где-то был готовый код, скину если найду ===UPDATE=== Нашел код, только он немного не на AS3, но рабочий Оказывается устанавливается скорость по горизонтали, а диагональная вычисляется по формуле Код AS3:
Код AS3:
|
Вот недавно было тут http://flashgameblogs.ru/blog/developing/1379.html
и тут http://flashgameblogs.ru/blog/developing/1380.html |
Спасибо огромное всем, кто откликнулся!
|
| Часовой пояс GMT +4, время: 11:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.