我无法在 p5js 中使用圆圈进行碰撞

问题描述 投票:0回答:1

我遵循了“TheCodingTrain”教程的说明,它描述了如何计算两个圆之间的距离来模拟碰撞。我还有更多,但这是与我的问题相关的代码。

  playerPos = createVector(width * 0.2, height / 2, 60);
  enemyPos1 = createVector(width * 0.8, height / 2, 40);

  d = dist(playerPos.x,playerPos.y,enemyPos1.x,enemyPos1.y);

  circle(playerPos.x, playerPos.y, playerPos.z);
  circle(enemyPos1.x, enemyPos1.y, enemyPos1.z);

  if( d < playerPos.z/2 + enemyPos1.z/2){
     enemyPos1.x++
  }

我尝试了上面的代码,它没有使小圆圈的位置发生变化。我原以为它会动。我已经检查过了,没有发现代码有任何问题。

javascript p5.js
1个回答
0
投票

您没有任何代码来创建运动。您有两个不重叠的圆圈,并且不移动,因此不会重叠。通常,人们使用添加到位置的速度矢量来创建运动。然后,当圆圈实际重叠时,您的碰撞检测代码将起作用:

let playerPos, enemyPos1;

function setup() {
  createCanvas(400, 400);
  playerPos = createVector(width * 0.2, height / 2, 60);
  enemyPos1 = createVector(width * 0.8, height / 2, 40);
  playerSpd = createVector(1, 0, 0);
  enemySpd1 = createVector(-1,0,0);
}

function draw() {
  background(255);
  d = dist(playerPos.x, playerPos.y, enemyPos1.x, enemyPos1.y);

  circle(playerPos.x, playerPos.y, playerPos.z);
  circle(enemyPos1.x, enemyPos1.y, enemyPos1.z);

  if (d < playerPos.z / 2 + enemyPos1.z / 2) {
    console.log("hit");
  }
  
  playerPos = playerPos.add(playerSpd);
  enemyPos1 = enemyPos1.add(enemySpd1);
}
© www.soinside.com 2019 - 2024. All rights reserved.