我所有的游戏对象都扩展了一个名为 的类,并且每个实例都在创建时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”的字符串变量来确定对象之间的差异。