我正在尝试在 p5js 中进行 boids 模拟。目前我正在尝试按照本教程实施分离规则。(相关章节为 6.11)。每当两个 boid 碰撞时,其中一个会被“传送”到原点,而不是避开另一个 boid。我已将问题缩小到separate
我Boid
班级中的函数,如下所示。
separate(boids) {
var count = 0
var desiredVelocity = createVector(0, 0)
// loop through boids to find if any are too close
for (const boid of boids) {
const distance = this.position.dist(boid.position)
if ((distance < this.desiredSeparation) && (boid.id != this.id)) {
count += 1
// too close; move away from boid
var steerAwayVector = boid.position.sub(this.position)
this.drawArrow(steerAwayVector, this.position, '#eb9ac1')
steerAwayVector.normalize()
steerAwayVector.div(distance)
desiredVelocity.add(steerAwayVector)
}
}
if (count > 0) {
desiredVelocity.setMag(this.maxSpeed)
var steer = desiredVelocity.sub(this.velocity)
steer.limit(this.maxForce)
this.applyForce(steer)
}
}
在这里查看我在 github 上的完整代码。什么/哪里有问题?如何解决此行为?