p5jsでboidsシミュレーションを作ろうとしています。現在、このチュートリアルに従って、分離ルールを実装しようとしています。(関連するセクションは 6.11 です)。2 つのボイドが衝突するたびに、一方のボイドが他のボイドを回避する代わりに、原点に「テレポート」されます。問題を以下のクラスの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 here で私の完全なコードを参照してください。何が/どこに問題がありますか? この動作を修正するにはどうすればよいですか?