Моя реализация обнаружения столкновений не ведет себя нормально

1

Я пытаюсь использовать некоторые простые силовые реализации в p5.js, у меня есть концепция, но я чувствую, что я забыл простую ошибку в моем коде. Это мой код прямо сейчас:

var x = 0;
var y = 0;
var grav = new p5.Vector(0, 13, 0);
var bounce = new p5.Vector(0, -13, 0);
var isbounce = false;
var ymax = 0;

function setup() {
    createCanvas(600, 400);
}

function draw() {
    console.log(ymax, isbounce);
    background(0);
    fill(255);
    ellipse(200, y, 50, 50);

    if (y < 376 && isbounce == false) {
        y += grav.y;
    }
    if (y >= 376) {
        isbounce = true;
    }
    if (isbounce == true) {
        y += bounce.y;
        if (y == ymax) {
            isbounce = false;
            ymax++;
        }
    }
}

JSfiddle

Как вы можете видеть, объект делает отскок дважды, но затем он полностью всплывает с экрана. Я не могу это объяснить, я посмотрел на консоль и подтвердил, что она только отскочила дважды (установка isbounce на true, false и true). Я ожидаю, что isbounce будет установлен на true каждый раз, когда объект попадает на землю, а на false, когда его значение y достигает ymax (которое уменьшается каждый раз, когда он отскакивает, чтобы стимулировать потерю энергии). Я думал, что это довольно простая реализация сил, но я озадачен тем, почему это не работает.

Теги:
p5.js

1 ответ

0
Лучший ответ

Замените if (y == ymax) { на if (y <= ymax) { чтобы убедиться, что он отскакивает в верхней части экрана.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню