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

Guyv3r 20.12.2012 19:00

Движение персонажа по нажатию клавиш
 
Здравствуйте, друзья! Прошу прощения за неимоверную наглость, но не могли бы вы подсказать мне, каким таким образом нормальные люди делают плавное движение персонажей во флеш играх? Речь идет о TDS (Top Down Shooter - стрелялка с видом сверху, а-ля GTA 1). Вот код, который я использую (на примере движения в правую сторону):

Код AS1/AS2:

onClipEvent (enterFrame) {
        if (Key.isDown(Key.RIGHT)) {
                _x =+5;
        }
}

И точно так же для движения влево, вверх и вниз. Для управления каким-нибудь человечком в принципе пойдет, но у меня в качестве главгероя летающая тарелка. А вот для нее такое резкое и отрывистое движение не подходит. После отпускания клавиши, она в идеале должна еще некоторое время лететь, замедляя скорость, а при нажатии клавиши постепенно разгоняться. Пытался втыкать accel, decay и reduct, но видимо руки не из того места..

Penance 20.12.2012 20:24

Вот, похоже это то, что вы искали =) Проверил, работает.

Код AS1/AS2:

var t:Number;
onEnterFrame  = function () {
 
if(Key.isDown(Key.RIGHT)) {
        if(t<10){
                t++
                };
  _x += t
 
        }
        else{t = 0}
}


Hauts 20.12.2012 20:56

Цитата:

каким таким образом нормальные люди делают плавное движение персонажей во флеш играх
Нормальные люди, думаю, заводят вектор движения и скорость, а не напрямую меняют _x и _y. Ибо так, как делаете сейчас вы, у вас движение по диагонали будет в ~1.4 раза быстрее движения по горизонтали или по вертикали.

А для плавности можно просто менять скорость, не трогая, соответственно, направление.

Guyv3r 20.12.2012 21:05

Цитата:

Сообщение от Penance (Сообщение 1110983)
Вот, похоже это то, что вы искали =) Проверил, работает.

Странно, у меня не пошло.. Может не та версия флеша? Я использую Macromedia Flash 8 (Action Script 2)

Цитата:

Сообщение от Hauts (Сообщение 1110987)
Нормальные люди, думаю, заводят вектор движения и скорость, а не напрямую меняют _x и _y. Ибо так, как делаете сейчас вы, у вас движение по диагонали будет в ~1.4 раза быстрее движения по горизонтали или по вертикали.

Спасибо за совет :) Еще бы знать как это делать.. Вообще я только начал изучать флеш, поэтому и способы реализации задуманного такие ламерские

EndoCrinologist 26.12.2012 15:45

есть хорошая статья. всё там есть ((С) на утро вышла черепаха)
http://flashok.ru/blog/blog/razrabot...ie-geroem.html
Она в пяти частях. Внизу ссылки по которым перейдешь на следующие. Мне очень помогла она


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

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