P5 - прыгающий мяч слева направо и обратно - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь заставить мяч бесконечно подпрыгивать справа налево, но я не могу заставить его работать. Приведенный ниже код указывает на то, что мяч будет go вправо и назад влево, но я не могу заставить его отскочить назад вправо. у кого-то есть идеи, как это исправить?

var speed = 3;
var ball = {
x: 100,
y: 200,

draw: function() {
    fill('red');
    circle(this.x, this.y, 100);
},
move: function(){
    if(this.x > width){
        speed = -3;
    }
    this.x = this.x + speed;
}
}

function setup() {
    createCanvas(500, 500);
    background(200, 225, 200);
}

function draw() {
    background(200,225,200);
    ball.draw();
    ball.move();

    }

PS Это мой первый пост, пожалуйста, скажите, если я что-то делаю не так или нужно что-то добавить.

1 Ответ

2 голосов
/ 08 января 2020

Вы должны инвертировать направление движения (speed *= -1), если мяч либо ударяет вправо (this.x > width), либо ударяет влево (this.x < 0):

let radius = 50;
if (this.x > width-radius  || this.x < radius ) {
    speed *= -1;
}

См. пример:

var speed = 3;
var ball = {
  x: 100,
  y: 200,
  radius: 50,

  draw: function() {
      fill('red');
      circle(this.x, this.y, this.radius*2);
  },
  move: function(){
      if (this.x > width-this.radius || this.x < this.radius) {
          speed *= -1;
      }
      this.x = this.x + speed;
  }
}

function setup() {
    createCanvas(500, 500);
    background(200, 225, 200);
}

function draw() {
    background(200,225,200);
    ball.draw();
    ball.move();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.js"></script>
...