Просмотр полной версии : Как прекратить движения клипа управляемого с клавиатуры?
Franches
11.06.2010, 13:31
Короч вот делаю обьект которым буду управлять с клавиатуры стрелочками.
Вот рисую обьект преобразовываю его в клип называю его "Hero"и пишу на нём
onClipEvent (load) {
h = 1;
}
onClipEvent (enterFrame) {
if (h) {
if (Key.isDown(Key.DOWN)) {
_y += 5;
} else if (Key.isDown(Key.UP)) {
_y -= 5;
} else if (Key.isDown(Key.RIGHT)) {
_x += 5;
} else if (Key.isDown(Key.LEFT)) {
_x -= 5;
}
}
}
Работает! Но как сделать препятствия что он не двигался дальше?
Пожалуйта помогите !!!
2 Franches:
Вы уж очень широкий вопрос задали. Я так понимаю, вы делаете игрушку... Так вот в играх препятствия по-разному героев могут тормозить. Такое не делается во флеше само по себе.
Franches
11.06.2010, 13:55
Ну есть же всякие флешки с препятствиями!
2 Franches:
Так это понятно. Есть и флешки с препятствиями, есть и серьёзные мультипользовательские онлайн-игры. Всё делается, не вопрос. Вопрос в том, как делается. Я просто хочу вам сказать, что нет во Флеше такой функции, которая говорит, мол, это будет препятствием для твоего героя. Нужно код писать, математику использовать. Да всё что угодно может быть в разных случаях. Какой именно алгоритм использовать в вашем случае, я не знаю, потому что не знаю точно, что нужно получить. На сайте gotoAndPlay (http://www.gotoandplay.it/) когда-то были всякие прототипы движков для игр-платформеров.
В объектах код писать не стоит и вообще писать на ас2, не стоит))
изучайте уже третий
вот пример на ас2, как это могло бы выглядеть:
var SPEED_MC:Number = 10;
var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() {
switch (Key.getCode()) {
case Key.LEFT :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;
case Key.UP :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;
case Key.RIGHT :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;
case Key.DOWN :
cCode = Key.getCode();
_root.onEnterFrame = position;
break;
}
};
keyListener_obj.onKeyUp = function() {
delete _root.onEnterFrame;
};
Key.addListener(keyListener_obj);
function position():Void {
if (wall.hitTest(_root.mc._x, _root.mc._y+14, true)) {
} else {
if (cCode == 40) {
mc._y += SPEED_MC;
}
}
if (wall.hitTest(_root.mc._x+14, _root.mc._y, true)) {
} else {
if (cCode == 39) {
mc._x += SPEED_MC;
}
}
if (wall.hitTest(_root.mc._x, _root.mc._y-14, true)) {
} else {
if (cCode == 38) {
mc._y -= SPEED_MC;
}
}
if (wall.hitTest(_root.mc._x-14, _root.mc._y, true)) {
} else {
if (cCode == 37) {
mc._x -= SPEED_MC;
}
}
}
собственно wall - это мувик в котором вы рисуете все препятствия.
mc - это персонаж
Тута полу-дохлый пример на ас три.
http://www.flasher.ru/forum/showthread.php?t=138682&page=2
пост №15
Franches
12.06.2010, 17:28
Спасибо! :)
Franches
23.06.2010, 20:35
Работает!!!
А как сделать чтоб можно было передвигать какиенибудь вещи (коробки например) ?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.