0

我正在尝试自定义一个碰撞器类,您可以在其中将两个对象传递给一个方法,如果两个对象中的任何一个发生碰撞,则执行某种操作。

比如我在做一个射击游戏,我想做的是说:

  • If AnyShip与任何子弹碰撞Bullet
    • 摧毁受影响的Ship和受影响的Bullet
  • 别的
    • 没做什么

我想做的就是写一次,而不是为每一颗子弹和/或每艘船写一次。所以,我正在考虑做这样的事情:

ColliderEvent collide = new ColliderEvent();
collide.hit(Ship, Bullet, new Runnable(){
    @Override
    public void run(){
        // Destroy bullet and ship here
    }
});

然后在我的主游戏线程中,我会做一些事情来测试在某种方法中提供的两个对象是否hit在某个点发生碰撞,如果是,则执行传入的第三个参数hit

那么,有没有办法在不将 Ship/Bullet 实例传递给hit方法的情况下做到这一点?

4

1 回答 1

1

我会尝试在您的库中使用事件和侦听器来处理类似的事情。基本上,您将拥有一个检查整个地图是否发生碰撞的类。如果发生碰撞,它会调用对象类(例如子弹或船)中的方法(您实现),告诉他们它们发生了碰撞。

于 2012-12-24T17:55:13.887 回答