连接第二个客户端时出错。我的代码通过 p5.Vector.dist()比较两个客户的当前位置,并且出现了错误,就在这里。
p5.Vector.dist(p5.js:25914)中的行是
p5.Vector.prototype.dist = function (v) {
var d = v.copy().sub(this); //This is the exact line where the error says from
return d.mag();
};
这是我的代码;
客户方;
//I use for loop to see all the contain of otherCircles
for(var x = 0; x < otherCircles.length; x++){
if(otherCircles[x].id != socket.id){ //To make sure i won't compare the client's data to its own because the data of all connected client's is here
console.log(otherCircles[x].radius); //To see if the data is not null
if(circle.eat(otherCircles[x])){
if(circle.radius * 0.95 >= otherCircles[x].radius){
otherCircles.splice(x,1);
console.log('ATE');
} else if(circle.radius <= otherCircles[x].radius * 0.95){
zxc = circle.radius;
asd = zxc;
circle.radius = null;
console.log('EATEN');
}
}
}
}
//Here's the eat function of the circle
function Circle(positionX,positionY,radius){
//The variables of Circle()
this.position = createVector(positionX, positionY);
this.radius = radius;
this.velocity = createVector(0, 0);
//Here's the eat function
this.eat = function(other) {
var distance = p5.Vector.dist(this.position, other.position); //Heres where the error
if (distance < this.radius + (other.radius * 0.25)) { //Compare there distance
return true;
} else {
return false;
}
}
}
otherCircles [] 包含;
这也是 console.log(otherCircles [x] .radius); 一行的输出。
我不认为服务器端是必要的,因为它只是接收客户端的当前位置和大小,并将其他客户端的位置和大小发送到。所有数据都存储在 otherCircles()中。行 console.log(otherCircles [x] .radius); 结果不为空,所以我知道有数据与客户端位置进行比较,为什么我会遇到这样的错误。
答案 0 :(得分:1)
如果没有MCVE,很难帮助你,但我会尝试引导你完成调试。
您已打印otherCircles[x].radius
,这是一个好的开始。但如果我是你,我想更多地了解otherCircles[x]
。它包含哪些变量和函数?我首先使用Google搜索“对象的JavaScript打印函数名称”,然后尝试弄清楚该对象中的确切内容。 otherCircles[x].position
的价值是什么?
从那里开始,我还要确保定义了otherCircles[x].position
并且p5.Vector
的实例。它有copy()
函数吗?
我也可以使用调试器逐步完成代码 - 每个浏览器都有一个,你应该熟悉它的使用。
如果您仍然无法正常工作,请发布我们可以通过复制粘贴来运行的MCVE。这意味着没有服务器代码,只需硬编码您的值,以便我们可以看到相同的错误。我打赌你在尝试将其缩小到一个小例子时发现了你的问题。但如果没有,我们将从那里开始。祝你好运。