Javascript/p5.js变量问题
我使用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
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
时,我并没有看到行为上的差异。如果您发布一个清晰地显示问题而不是整个项目的日志,您的运气会好得多。