PDA

Просмотр полной версии : Движение персонажа по диагонали. Как это можно реализовать?


Bорон
04.10.2007, 00:15
Доброго времени суток.

Еще раз поднимаю тему.
В прошлый раз так ничего и не придумалось... А хочеться.

Как можно реализовать движение персонажа по диагонали с испозованием комбинаций из двух кнопок?
Проблема:
При нажатии кнопки курсора персонажу добавляется некая составляющая скорости (по х и по у).
При отпускании кнопки я не могу определить какую кнопку отпустили и соответственно - какую составляющую движения убирать.

Как это вообще во флешевых игрушках реализуют?

Очень надеюсь на вашу подсказку.
С уважением. Ворон.

udaaff
04.10.2007, 00:26
А событие onKeyUp на что?

Mr. Fixit
04.10.2007, 00:36
тоесть?
а что при нажатии двух кнопок он движеться по одной только траектории?
если да, то вставь:

if(Key.isDown(Key.LEFT)) {
hero_mc._x -= 5;
}
if(Key.isDown(Key.UP)) {
hero_mc._y -= 5;
}

if(Key.isDown(Key.RIGHT)) {
hero_mc._x += 5;
}
if(Key.isDown(Key.DOWN)) {
hero_mc._y += 5;
}

так пойдет?

Bорон
04.10.2007, 00:57
Извините, похоже я тормоз...
Скажите пожалуста будет ли верным такой код:

_root.keyListener = new Object();
_root.keyListener.onKeyDown = function() {
switch(Key.getCode()){
case Key.UP:
trace('нажали вверх');
break;
case Key.DOWN:
trace('нажали вниз');
break;
case Key.LEFT:
trace('нажали влево');
break;
case Key.RIGHT:
trace('нажали вправо');
break;
}
}
_root.keyListener.onKeyUp = function() {
switch(Key.getCode()){
case Key.UP:
trace('отпустили вверх');
break;
case Key.DOWN:
trace('отпустили вниз');
break;
case Key.LEFT:
trace('отпустили влево');
break;
case Key.RIGHT:
trace('отпустили вправо');
break;
}
}
Key.addListener(_root.keyListener);

Mr. Fixit
04.10.2007, 02:51
кинь ссылку на игру с подобным движком...

Bорон
04.10.2007, 02:53
http://nightfolk.net/work/template/index.html

Mr. Fixit
04.10.2007, 06:05
омг, а я что неправ написал??
так пойдет, не перекривая ифы.

Bорон
04.10.2007, 12:18
омг, а я что неправ написал??
так пойдет, не перекривая ифы.

ничего не понял.
вы о чем?