出于某种原因,检查冲突(是否有相同坐标中的对象)会在几秒钟内使java崩溃
解决 我正在开发自己的java游戏引擎,它有自己的“物理引擎”,出于某种原因,我检查碰撞的新方法崩溃了java 我对java相当陌生,我不知道发生了什么,我没有看到代码中有任何问题,我也不认为我会看到它 完整的源代码可在 gameobject.java中的函数:出于某种原因,检查冲突(是否有相同坐标中的对象)会在几秒钟内使java崩溃,java,Java,解决 我正在开发自己的java游戏引擎,它有自己的“物理引擎”,出于某种原因,我检查碰撞的新方法崩溃了java 我对java相当陌生,我不知道发生了什么,我没有看到代码中有任何问题,我也不认为我会看到它 完整的源代码可在 gameobject.java中的函数: private void checkAdvancedCollisions(objectManager o,gameObject i){ 如果(!i.masterParent.engine\u冲突){ 返回; } LinkedList i
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))
看起来很奇怪。我的快速猜测是,这是一个无限循环…使忽略aHashSet
,因为它可能会增长。顺便说一句,for(int xc:new Range(size))
看起来很奇怪。