【问题标题】:Remove an object if it overlaps another object libgdx如果一个对象与另一个对象 libgdx 重叠,则删除它
【发布时间】:2014-08-03 01:50:18
【问题描述】:

我是 libgdx 和 Android 游戏开发的新手。所以我需要你的帮助。 我有检测碰撞的代码。我使用矩形方法。 如果 objectA 与 objectB 重叠,那么我希望 objectA 被销毁。

这是我现在的代码:

if (objectA.getBounds().overlaps(objectB.getBounds())) {
        System.out.println("Collsion Detected!");
        }

System.out.println 工作正常。 但我不知道如果它重叠,我如何“删除”objectA。

谢谢

【问题讨论】:

  • 我们也不知道,只要您没有描述“删除”的确切含义。通常你的游戏中有一些东西的集合,你会在每一帧中更新并在每一帧中渲染。例如,如果您从中删除 objectA,它就会消失。

标签: android eclipse libgdx collision destroy


【解决方案1】:

为了删除对象,如果它只是图像(Texture/Sprite 等),你不应该在 render() 方法中使用 draw 它。示例:

Sprite objectIwantToRemove= new Sprite();
// init your sprite here.....

if (objectA.getBounds().overlaps(objectB.getBounds())) {
    objectIwantToRemove=null; //here i mark it as null, you can remove it from your ArrayList or anything else. Depends how you keeps it.
    }

@Override
public void render(float delta) {
  if(objectIwantToRemove!=null){
    spriteBatch.begin();
    objectIwantToRemove.draw(spriteBatch);
    spriteBatch.end();
  }
}

P.S 这是非常基本的示例,只是为了让您知道如何删除图像。如果您使用 Box2D,那就另当别论了...

【讨论】:

  • 如何从数组列表中删除它?
  • 从 ArrayList 作为任何其他对象:listName.remove(object);
  • 没关系,我使用 group.removeValue() 方法解决了这个问题。
猜你喜欢
  • 2018-06-21
  • 1970-01-01
  • 2014-08-28
  • 2021-03-15
  • 2014-08-28
  • 1970-01-01
  • 2022-06-11
  • 2020-10-30
  • 1970-01-01
相关资源
最近更新 更多