Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
出于某种原因,检查冲突(是否有相同坐标中的对象)会在几秒钟内使java崩溃_Java - Fatal编程技术网

出于某种原因,检查冲突(是否有相同坐标中的对象)会在几秒钟内使java崩溃

出于某种原因,检查冲突(是否有相同坐标中的对象)会在几秒钟内使java崩溃,java,Java,解决 我正在开发自己的java游戏引擎,它有自己的“物理引擎”,出于某种原因,我检查碰撞的新方法崩溃了java 我对java相当陌生,我不知道发生了什么,我没有看到代码中有任何问题,我也不认为我会看到它 完整的源代码可在 gameobject.java中的函数: private void checkAdvancedCollisions(objectManager o,gameObject i){ 如果(!i.masterParent.engine\u冲突){ 返回; } LinkedList i

解决 我正在开发自己的java游戏引擎,它有自己的“物理引擎”,出于某种原因,我检查碰撞的新方法崩溃了java

我对java相当陌生,我不知道发生了什么,我没有看到代码中有任何问题,我也不认为我会看到它

完整的源代码可在

gameobject.java中的函数:

private void checkAdvancedCollisions(objectManager o,gameObject i){
如果(!i.masterParent.engine\u冲突){
返回;
}
LinkedList ignore=tag;
用于(游戏对象ga:儿童){
ignore.addAll(ga.tag);
}
用于(int xc:新范围(大小)){
用于(int yc:新范围(尺寸)){
if(o.碰撞(数学圆(i.x+xc),数学圆(i.y+yc),忽略)){
点1(i,o.collingga(xc,yc,ignore));
}
else if(o.碰撞(数学圆(i.x+xc),数学圆(i.y+yc+1),忽略)){
点2=真;
点2(i,o.collingga(Math.round(i.x+xc),Math.round(i.y+yc+1),忽略));
}
否则{
碰撞=错误;
点2=假;
}
}
}
}
实际签入objectmanager.java(应该可以正常工作):

公共布尔冲突(int x,int y,LinkedList忽略){
用于(游戏对象i:对象){
如果(i.getTag().contains(“游标”)| | i.getTag().containsAll(ignore)){}
否则{
if((四舍五入(i.x)=x和四舍五入(i.y)=y)){
返回true;
}
}
}
返回false;
}
公共游戏对象冲突GA(整数x,整数y,链接列表忽略){
用于(游戏对象i:对象){
如果(i.getTag().contains(“游标”)| | i.getTag().containsAll(ignore)){}
否则{
if((四舍五入(i.x)=x和四舍五入(i.y)=y)){
返回i;
}
}
}
返回null;
}

当使用此函数时,java完全停止,没有错误消息或任何内容

感谢Joop Eggen指出忽略列表可能包含无止境的内容。
代码是将子对象的所有标签添加到列表中,而所有游戏对象都是它们自己的子对象,从而形成一个无休止的列表。

感谢Joop Eggen指出忽略列表可能包含无休止的内容。
代码是将子对象的所有标记添加到列表中,而所有游戏对象都是它们自己的子对象,这会导致一个无休止的列表。

我的快速猜测是,这是一个无限循环…使
忽略
哈希集
可能会不断增长。顺便说一句,
for(int xc:new Range(size))
看起来很奇怪。我的快速猜测是,这是一个无限循环…使
忽略
a
HashSet
,因为它可能会增长。顺便说一句,
for(int xc:new Range(size))
看起来很奇怪。