0
我使用p5.js併爲小對象創建了構造函數。 當我嘗試更新這些對象的列表時,一切都開始以非常奇怪的方式影響其他對象。爲什麼它的行爲如此?Javascript/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()
}
}
這裏是構造函數:
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))
}
}
你能說比對象相互影響更具體嗎?這段代碼究竟做了什麼?此外,定義了「位置」,「速度」和「加速度」函數在哪裏? –
那麼我從參數中獲得位置,所有的變量都是p5.Vectors(參見[p5.js參考](https://p5js.org/reference/#/p5/createVector))。即使我確定加速度沒有變化,對象也開始搖擺,永遠不會到達目標。似乎來自每一個Bot的加速度都被應用於其他Bot)。 – gDKdev
你可以發佈一個鏈接到JSFiddle或CodePen中運行的代碼嗎? –