Я совершенно новичок в JavaScript и p5.js. Я знаю, что это не самый эффективный код для прыгающего мяча, но я пытался написать собственную механику прыгающего мяча как самообучающуюся.
function draw() {
background (col); // background
col = map(cir.x, 0, 600, 0, 255) // map function
fill (350, 200, 200);
ellipse (cir.x, cir.y, cir.diameter, cir.diameter);
// Bounding ball mechanic
var speed = 3;
var hitRightWall = false;
var hitLeftWall = false;
if (cir.x >= 300) {
hitRightWall == true;
hitLeftWall == false;
}
else if (cir.x <= -50) {
hitLeftWall == true;
hitRightWall == false;
}
if (hitRightWall==true) {
speed == -3;
}
else {
speed == 3;
}
cir.x = cir.x + speed;
}
По какой-то причине if (hitRightWall==True)
никогда не активируется, даже if (cir.x >= 300)
активировано if (cir.x >= 300)
. Мяч продолжает двигаться вправо и за пределы экрана.
Здесь происходит несколько вещей. Во-первых, вы сбрасываете значения hitRightWall
и hitLeftWall
в false
каждый кадр. Это то, что вы хотите?
Во-вторых, посмотрите на такие утверждения:
hitRightWall == true;
==
двойное равенство выполняет сравнение, а не задание. Вы, вероятно, хотите что-то вроде этого:
hitRightWall = true;
Значение =
single равно назначает значение переменной.
Наконец, я не совсем уверен, зачем вам вообще нужны эти переменные. Разве вы не можете изменить переменную speed
непосредственно в первом операторе if/else if
?
Бесстыдная самореклама: вот учебник по обнаружению столкновений. Написано для обработки, но те же идеи применимы и к P5.js.
==
на =
для назначения. Как уже упоминалось, я хочу создать свою собственную механику прыгающего мяча после обучения, если условие самообороны. Я уверен, что это не самый эффективный. Я хочу посмотреть на лучшие примеры (например, ваши учебные пособия) после того, как попробовал первый. Кстати, ваша пачка выглядит хорошо, проверю позже.
hitRightWall
вtrue
, я думаю, что это причина того, почемуhitRightWall==true
никогда не выполняется.if (cir.x >= 300)
, тогда hitRightWall будет верным, нет?