Как переместить тело Matter. js с помощью клавиш со стрелками? - PullRequest
1 голос
/ 06 августа 2020

В настоящее время я пытаюсь сделать 2d игру про танка в Javascript для школьного проекта, и чтобы иметь дело с физикой, я использую материю библиотеки физики. js вместе с p5. js для рендеринга. Пока у меня есть базовый c холст с границами на стенах и полу, так что объекты не могут go за пределами экрана, однако следующая задача - иметь возможность перемещать ящик (который позже будет резервуаром). ) влево и вправо с помощью клавиш со стрелками. Раньше я делал нечто подобное в чистом JS, просто используя прослушиватель событий, чтобы определить, когда нажата клавиша со стрелкой влево или вправо, а затем перерисовывать объект на 5 пикселей влево или вправо. Однако этот подход не сработал в Matter. js, и он оставил меня в тупике.

Вот функция draw (), в которой я сейчас пытаюсь поэкспериментировать с различными способами, чтобы выяснить это:

function draw() {
    background(51);
    Engine.update(engine);
    for (var i = 0; i < boxes.length; i++) {
        boxes[i].show();
    }
     if(rightPressed) {
         box1.position.x += 7
     }
    if(leftPressed) {
        Body.applyForce(box1, {x: box1.position.x, y: box1.position.y}, {x: 0.05, y: 0});
    }
    for (var i = 0; i < boundaries.length; i++) {
      boundaries[i].show();
    }
    for (var i = 0; i < circles.length; i++) {
        circles[i].show();
        if (circles[i].isOffScreen()) {
            circles[i].removeFromWorld();
            circles.splice(i, 1)
            i--;
        }
    }
}

setInterval(draw, 10)

Любая помощь приветствуется :)

1 Ответ

0 голосов
/ 06 августа 2020

Используйте функцию keyIsDown (), чтобы проверить указанные c ключевые вводы. Пример:

draw(){

   if(keyIsDown(LEFT_ARROW)){
      //code xyz
     }

}
...