Идеи для прыжка в 2D с Actionscript 3 [включенная попытка] - PullRequest
0 голосов
/ 07 апреля 2010

Итак, я работаю над основами Actionscript 3; делать игры и тому подобное. Я спроектировал небольшое пространство, где все основано на расположении границ, использовании попиксельного движения и т. Д.

Пока что мой парень может толкать коробку и останавливается при столкновении с границей или при попытке толкнуть коробку, когда она против границы.

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

Сначала я попытался (глупо) использовать это:

// When right and left borders collide.    
if( (box1.x + box1.width/2) == (box2.x - box2.width/2) ) {

    // Nine times through
    for (var a:int = 1; a < 10; a++) {

        // Adds 1, 2, 3, 4, 5, 4, 3, 2, 1.
        if (a <= 5) {
            box2.x += a; }
        else {
            box2.x += a - (a - 5)*2 } } }

Хотя, используя это в функции, которую я имел для движения (постоянно проверяю ключи вверх и т. Д.), Все это делается одновременно. С чего мне начинать движение за кадром? Более того, это не кадры в сцене, а только в движении.

Это огромная куча мусора, прошу прощения, но любая помощь будет признательна.

1 Ответ

0 голосов
/ 07 апреля 2010

попробуйте сделать что-то вроде: (обратите внимание, что ev.target - это поле, которому вы назначили слушателя)

var boxJumpDistance:Number = 0;

function jumpBox(ev:Event){
    if (boxJumpDistance<= 5) {
        ev.target.x += boxJumpDistance; }
    else if(boxJumpDistance<=10){
        ev.target.x += boxJumpDistance - (boxJumpDistance - 5)*2 
    }
    else{
        boxJumpDistance = 0;
        ev.target.removeEventListener(Event.ENTER_FRAME, jumpBox);
    }
}

, затем вместо запуска цикла просто добавьте слушателя:

box2.addEventListener(Event.ENTER_FRAME, jumpBox);

, хотя на данный момент это работает только для одного блока за раз (так как он использует только одну переменную отслеживания для скорости), вы действительно хотели бы иметь эту функцию внутри класса бокса, но яне уверены, как ваша структура идет.другой вариант - создать массив для перемещения ящиков?цикл через массив каждый кадр.boxesMoveArray[1] >=5 для коробки 1 и т. Д.

...