0

我所有的游戏对象都扩展了一个名为 的类,并且每个实例都在创建时Entity插入到中。ArrayList<Entity>

我的理论是,我将能够遍历屏幕上的所有对象,更新它们,并检查它们是否与嵌套循环中的任何其他对象发生碰撞。如果它们发生碰撞,我可以将它们碰撞的对象传递给 onCollide 方法,该方法将根据对象是什么来处理碰撞;IE;

//Update Game Objects
if(gameObjects.size() > 0){
for(int counter = 0; counter < gameObjects.size(); counter ++){

    //Update every object.
    gameObjects.get(counter).update(gc, sbg, delta, gameObjects);

    //If the object is colliding with another object,
    for(int collisionCounter = 0; collisionCounter < gameObjects.size(); collisionCounter ++){

        if(gameObjects.get(counter).isColliding(gameObjects.get(collisionCounter))){    
            //Execute collision code for both objects.
            gameObjects.get(counter).onCollide(gameObjects.get(collisionCounter));
            gameObjects.get(collisionCounter).onCollide(gameObjects.get(counter));
        }
    }
}
} 

但是,由于我的 ArrayList 由“实体”组成,Java 不允许我重载方法,例如;

onCollide(Player player),
onCollide(Enemy enemy)

等等

我想避免使用instanceof,那么有没有办法利用多态性来实现这种效果,或者一般来说有更好的方法来进行碰撞?

[已解决] 现在使用名为“type”的字符串变量来确定对象之间的差异。

4

0 回答 0