Java 增加render()中的变量并删除矩形和图像
我想在任何重叠期间提出一个可变硬币。 问题是,硬币是一个图像,不能只增加一次,使我的硬币增加至少10/11倍。 我的目标是删除图片,然后删除矩形,正如我在下面的代码中所做的那样。问题是,如果我删除矩形,那么我甚至无法识别硬币上的重叠部分。我该怎么修理Java 增加render()中的变量并删除矩形和图像,java,libgdx,render,collision,Java,Libgdx,Render,Collision,我想在任何重叠期间提出一个可变硬币。 问题是,硬币是一个图像,不能只增加一次,使我的硬币增加至少10/11倍。 我的目标是删除图片,然后删除矩形,正如我在下面的代码中所做的那样。问题是,如果我删除矩形,那么我甚至无法识别硬币上的重叠部分。我该怎么修理 render() .... if(!monetaRectangles.isEmpty() && !monetaImages.isEmpty()) { for (int i =
render()
....
if(!monetaRectangles.isEmpty() && !monetaImages.isEmpty()) {
for (int i = 0; i < monetaRectangles.size(); i++) {
monetaRectangles.get(i).setX(monetaImages.get(i).getX());
monetaRectangles.get(i).setY(monetaImages.get(i).getY());
if (surferRectangle.overlaps(monetaRectangles.get(i))) {
contatoreMonete++;
monetaRectangles.remove(i);
monetaImages.get(i).remove();
moneteLabel.setText("Monete: " + contatoreMonete);
}
}
}
...
end render()
render()
....
如果(!monetaRectangles.isEmpty()&&!monetaImages.isEmpty()){
对于(int i=0;i
dell'overlaps对象的持续时间为1秒,因此我正确地增加了每个渲染的变量,您可能想解决?我缺少逻辑您在对集合进行迭代时正在对其进行修改。(使用libGDX集合,这样就不会每次都创建新的迭代器)
for(inti=0;i
对保留图像和矩形之间关系的对象集合使用迭代器。然后您可以执行Iterator.remove(),并正确地进行迭代
一些一般性的建议-你似乎试图保持你的物理/游戏世界的“位置”与你的图像的“位置”同步,反之亦然
我建议将游戏对象重新架构为“渲染数据”、“物理/世界数据”和“游戏逻辑数据/过程”的组合。然后,将公共属性集中到双方都可以访问的组件中。职位是这类数据的常见候选者。现在,当您更新位置时,使用该位置的所有内容也将更新
Ashley是一个LibGDX项目,可以帮助实现这一点,它指向本文对此进行了解释:将删除的矩形存储在另一个列表中?不,我不将矩形存储在另一个列表中。我向您建议这种技术。啊,我现在才明白,目前硬币已经在另一个列表中,这是您在请求正文中看到的。
for (int i = 0; i < monetaRectangles.size(); i++) { //
monetaRectangles.get(i).setX(monetaImages.get(i).getX());// if you removed 'i' in the previous loop this will effectively get i+2 of the original
monetaRectangles.get(i).setY(monetaImages.get(i).getY());
if (surferRectangle.overlaps(monetaRectangles.get(i))) {
contatoreMonete++;
monetaRectangles.remove(i); //The semantics of 'i' is now changed.
monetaImages.get(i).remove();//also here
moneteLabel.setText("Monete: " + contatoreMonete);
}
}