パドルとボールの衝突判定について

2020年4月17日
ユーザー

動画内でのパドルとボールの衝突判定のコード(以下)

this.checkCollision = function(paddle) {
  if ((this.y + this.r > paddle.y && this.y + this.r < paddle.y + paddle.h) &&
    (this.x > paddle.x - paddle.w / 2 && this.x < paddle.x + paddle.w / 2)) {
    this.vy *= -1;
  }
}

意味は分かるのですが、if文の中の最初の()を

if ((this.y + this.r === paddle.y)

としてはダメなのでしょうか?(接触の瞬間)
実際に書き換えてみると、衝突が起こらずにボールがパドルを素通りしてしまいます。

なぜボールが反転しないのでしょうか。
ボールの移動速度に判定計算が間に合わないのでしょうか?

ご教示よろしくお願いします。

この回答を見るにはプレミアムサービスへの登録が必要です

プレミアムサービスとは?