Условное утверждение не активировано для прыгающего мяча в p5.js

1

Я совершенно новичок в 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). Мяч продолжает двигаться вправо и за пределы экрана.

  • 0
    В вашем коде вы никогда не устанавливаете значение hitRightWall в true , я думаю, что это причина того, почему hitRightWall==true никогда не выполняется.
  • 0
    Но я думал, что я установил условие, if (cir.x >= 300) , тогда hitRightWall будет верным, нет?
Показать ещё 1 комментарий
Теги:
p5.js

1 ответ

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

Здесь происходит несколько вещей. Во-первых, вы сбрасываете значения hitRightWall и hitLeftWall в false каждый кадр. Это то, что вы хотите?

Во-вторых, посмотрите на такие утверждения:

hitRightWall == true;

== двойное равенство выполняет сравнение, а не задание. Вы, вероятно, хотите что-то вроде этого:

hitRightWall = true;

Значение = single равно назначает значение переменной.

Наконец, я не совсем уверен, зачем вам вообще нужны эти переменные. Разве вы не можете изменить переменную speed непосредственно в первом операторе if/else if?

Бесстыдная самореклама: вот учебник по обнаружению столкновений. Написано для обработки, но те же идеи применимы и к P5.js.

  • 0
    Большое спасибо, я заставил его работать, вынимая эти переменные из цикла отрисовки и заменяя == на = для назначения. Как уже упоминалось, я хочу создать свою собственную механику прыгающего мяча после обучения, если условие самообороны. Я уверен, что это не самый эффективный. Я хочу посмотреть на лучшие примеры (например, ваши учебные пособия) после того, как попробовал первый. Кстати, ваша пачка выглядит хорошо, проверю позже.

Ещё вопросы

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