Javascript/p5.js变量问题

Javascript/p5.js变量问题,javascript,p5.js,Javascript,P5.js,我使用p5.js并为一个小对象创建了一个构造函数。 当我试图更新这些对象的列表时,一切都开始以一种非常奇怪的方式影响其他对象。为什么会这样 以下是我的草图的简化版本: var pellets = [], cells = [] function setup() { createCanvas(400, 300) // ... for (var i = 0; i < 3; i++) { var pos = createVector(random

我使用p5.js并为一个小对象创建了一个构造函数。 当我试图更新这些对象的列表时,一切都开始以一种非常奇怪的方式影响其他对象。为什么会这样

以下是我的草图的简化版本:

var pellets = [],
    cells = []

function setup() {
    createCanvas(400, 300)
    // ...

    for (var i = 0; i < 3; i++) {
        var pos = createVector(random(width), random(height))
        var col = color("#ff0000")
        cells.push(new Bot(pos, col, pelletMiddle))
    }

    // ...
}

function draw() {
    for (var i in pellets) {
        cells[i].update()
        cells[i].draw()
    }
}
var=[],
单元格=[]
函数设置(){
createCanvas(400300)
// ...
对于(变量i=0;i<3;i++){
var pos=createVector(随机(宽度)、随机(高度))
var col=颜色(“ff0000”)
单元格推送(新机器人(位置、列、中间粒子))
}
// ...
}
函数绘图(){
用于(颗粒中的var i){
单元格[i].update()
单元格[i].draw()
}
}
下面是构造函数:

function Bot(position, col, mass) {
    //private:
    position = position.copy()
    var velocity = createVector()
    var acceleration = createVector()

    //public:
    this.nearby = []
    this.draw = function () {
        fill(col)
        ellipse(position.x, position.y, mass)
    }

    this.getPosition = function () {
        return position.copy()
    }

    this.getDistance = function (vector) {
        return position.dist(vector)
    }

    this.update = function () {
        position.add(velocity)
        velocity.add(acceleration).limit(5)

        var pos = createVector(),
            dist = Infinity
        for (var i in pellets) {
            var lpos = pellets[i].getPosition()
            if (this.getDistance(lpos) < dist) {
                dist = this.getDistance(lpos)
                pos = lpos
            }
        }
        acceleration = pos.sub(position).limit(random(0.5))
    }
}
功能机器人(位置、立柱、质量){
//私人:
position=position.copy()
var velocity=createVector()
var加速=createVector()
//公众:
this.nearest=[]
this.draw=函数(){
填充(col)
椭圆(位置x,位置y,质量)
}
this.getPosition=函数(){
返回位置。复制()
}
this.getDistance=函数(向量){
返回位置距离(向量)
}
this.update=函数(){
位置。添加(速度)
速度加(加速度)极限(5)
var pos=createVector(),
距离=无穷大
用于(颗粒中的var i){
var lpos=pillets[i].getPosition()
如果(此.getDistance(lpos)
经过几个小时的修补,我发现了这个问题。。。 在
velocity
acceleration
之前,我缺少
var


因此
速度
加速度
只是全局变量。

你能说得比说物体相互影响更具体一点吗?这段代码到底是做什么的?另外,定义的
位置
速度
加速度
函数在哪里?我从参数中得到位置,所有变量都是p5.向量(请参阅)。物体开始摇晃,永远无法到达目标,即使我确保加速度不变。似乎每一个机器人的加速都会应用到其他机器人上)。您可以发布一个链接到您在JSFIDLE或CodePen中运行的代码吗?是请求的代码笔。球员通常不应该像这样摇晃。(当您将c.botAmount设置为0时,您可以看到它应该如何正常运行对不起,但是当我将
botAmount
设置为
0
时,我并没有看到行为上的差异。如果您发布一个清晰地显示问题而不是整个项目的日志,您的运气会好得多。