我正在设计一个基本的游戏引擎。我有一个抽象的GameObject
类,它由两个类Player
和Bullet
继承。我正在尝试处理两个游戏对象的碰撞。如果两个碰撞对象相同,则什么也不会发生。如果其中一个是子弹,另一个是玩家,则该玩家的生命值设置为0。以下代码段显示了所需的方法和类定义:
public interface GameObject {
void onCollision(GameObject gameObject);
}
public class GameObjectImpl implements GameObject {
...
// By default,do nothing.
@Override
public void onCollision(GameObject object) {}
}
public class Player extends GameObjectImpl {
...
@Override
public void onCollision(GameObject gameObject) {
if (gameObject instanceof Player) {
// Do nothing
} else if (gameObject instanceof Bullet) {
this.health = 0;
}
}
}
我想避免使用instanceof
,但我想不出任何办法。我想使用polymorphism
来实现它,因为GameObject
界面的客户端不应该知道有关子弹或播放器等的详细信息。它只会为每个帧中的对象调用onCollision
方法。如何使用更简洁的代码实现这一目标?谢谢。