Я пытаюсь использовать некоторые простые силовые реализации в 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++;
}
}
}
Как вы можете видеть, объект делает отскок дважды, но затем он полностью всплывает с экрана. Я не могу это объяснить, я посмотрел на консоль и подтвердил, что она только отскочила дважды (установка isbounce
на true, false и true). Я ожидаю, что isbounce
будет установлен на true каждый раз, когда объект попадает на землю, а на false, когда его значение y достигает ymax (которое уменьшается каждый раз, когда он отскакивает, чтобы стимулировать потерю энергии). Я думал, что это довольно простая реализация сил, но я озадачен тем, почему это не работает.
Замените if (y == ymax) {
на if (y <= ymax) {
чтобы убедиться, что он отскакивает в верхней части экрана.