0

我正在尝试在 p5js 中进行 boids 模拟。目前我正在尝试按照本教程实施分离规则。(相关章节为 6.11)。每当两个 boid 碰撞时,其中一个会被“传送”到原点,而不是避开另一个 boid。我已将问题缩小到separateBoid班级中的函数,如下所示。

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 上的完整代码。什么/哪里有问题?如何解决此行为?

4

0 回答 0