Информация

Обсуждало 1 человек

Анимация в игре

Логика и программирование
29 июня 2011 в 15:05:31

Помогите пожалуйста! Я пытаюсь сделать анимированного человечка, а он анимированно идет только влево! Вправо стоит! Что то не так с кодом?

onClipEvent (enterFrame) {
if(Key.isDown(Key.RIGHT)) {
this._x += 8;
play();


}
if (Key.isDown(Key.LEFT)) {
this._x -= 8;
play();


}
else{stop();

}
}

Исходник:
http://depositfiles.com/files/8tjh1fjhh

Обсуждение (вниз)

Не хватает только вашего мнения. Зарегистрируйтесь, чтобы написать!

01 июля 2011 в 10:21:31

Отлично! А как добавить "верх" и "низ"?

30 июня 2011 в 19:15:00

Относительно поворота героя, исправил свой предыдущий код (добавилась строка со свойством _xscale):

onClipEvent (enterFrame) { var way:Number = 0; if(Key.isDown(Key.RIGHT)) way = 1; if (Key.isDown(Key.LEFT)) way = -1; if (way != 0) { this._xscale = 100 * way; this._x += 8 * way; play(); } else stop(); }

30 июня 2011 в 19:11:49

Или вот так без комментариев:

stop (); jspeed = 0; down = false; jump = false; man.onEnterFrame = function () { if (!level.hitTest (this._x, this._y + 3, true) && (down == true || jump == false)) { jspeed++; this._y += jspeed; hand._y += jspeed; } else if (jump == true && down == false) { if (jspeed > 0) { jspeed--; this._y -= jspeed; hand._y -= jspeed; } else { jspeed = 0; down = true; } } else { jump = false; down = false; jspeed = 0; } if (Key.isDown (32) && jump == false) { jspeed = 15; jump = true; } };

30 июня 2011 в 19:11:29

Вот прыжок. Скопировал из "ультрамэна", т.е. просто вырезал с комментариями нужный код.

stop (); //Объявляем переменные: //скорость прыжка jspeed = 0; //переменная для падения down = false; //переменная для прыжка jump = false; //задаем действия, выполняемое всегда при нахождении клипа на кадре man.onEnterFrame = function () { if (!level.hitTest (this._x, this._y + 3, true) && (down == true || jump == false)) { //Падение //Если центр чел НЕ соприкасается с уровнем и активно падение, //либо НЕ активен прыжок, выполняется падение //увеличение скорости падения (небольшой эффеккт притяжения) jspeed++; //смещение чела вниз на jspeed this._y += jspeed; //смещение руки вверх на jspeed hand._y += jspeed; } else if (jump == true && down == false) { //Прыжок //Если чел НЕ падает и прыжок активен и падение НЕ активно, //выполняется прыжок if (jspeed > 0) { //пока скорость прыжка больше 0 //уменьшение скорости прыжка(небольшой эффект притяжения) jspeed--; //смещение чела вверх на jspeed this._y -= jspeed; //смещение руки вверх на jspeed hand._y -= jspeed; } else { //если скорость меньше либо равно 0 //обнуление jspeed jspeed = 0; //активация падения down = true; } } else { //"Стояние" //Если чел НЕ падает и НЕ прыгает, тогда он стоит //дезактивация прыжка jump = false; //дезактивация падения down = false; //обнуление jspeed jspeed = 0; } //Прыжок //При нажатие на пробел (код 32) и НЕ активности прыжка //выполняется прыжок if (Key.isDown (32) && jump == false) { //задаем действия, выполняемое всегда при нахождении клипа на кадре jspeed = 15; //активация прыжка jump = true; } };

29 июня 2011 в 15:58:40

А-а-а... Ок)))

29 июня 2011 в 15:57:34

Да я ж говорю, вечером полезу в те исходники и потом тебе сюда скину кусок с прыжком... ;)

29 июня 2011 в 15:48:24

Как ТОЛЬКО код прыжка вставить в игру?

29 июня 2011 в 15:45:01

А, да, их и собирался искать... Ну человеческий вариант прыжка для пиксельных карт только на AS3, со всей этой коллизией или как ее называют (пишу игры, не зная определений XD)... А на AS2 только то, что уже выкладывл.

29 июня 2011 в 15:30:25

Хотя если подскажешь как эти коды вставить в игру, то я могу и их использовать.

29 июня 2011 в 15:29:52

У меня есть исходники ball и ultra man, но мне нужен какой нибудь простейший код прыжка, легкий к использованию и без приятных бонусов)

29 июня 2011 в 15:28:08

Это нужно будет порытся по старым архивам с исходниками для AS2.0, вечером скину... :)

29 июня 2011 в 15:26:21

А можешь подсказать код прыжка?

29 июня 2011 в 15:22:35

Два варианта:

1) блок if - else if - else
onClipEvent (enterFrame) { if(Key.isDown(Key.RIGHT)) { this._x += 8; play(); } else if (Key.isDown(Key.LEFT)) { this._x -= 8; play(); } else stop(); }


2) через дополнительную переменную
onClipEvent (enterFrame) { var way:Number = 0; if(Key.isDown(Key.RIGHT)) way = 1; if (Key.isDown(Key.LEFT)) way = -1; if (way != 0) { this._x += 8 * way; play(); } else stop(); }


Второй более правильный (когда зажать две кнопки, во втором случае он идти вообще не будет)... ;)

29 июня 2011 в 15:19:30

Тут у тебя немного с условиями напутано. Минутку.
Fundux.ru v.3.0 © 2006-2021 AleXNoD
Портал русских флеш игр и flash мультов