对象而不是实例的碰撞测试

时间:2012-12-24 17:25:15

标签: java

我正在尝试自定义一个collider类,你可以将两个对象传递给一个方法,如果两个中的任何一个碰撞,就会执行某种操作。

例如我正在制作射击游戏,而我想做的就是说:

  • 如果任何Ship与任何项目Bullet发生碰撞
    • 销毁受影响的Ship和受影响的Bullet
  • 否则
    • 什么都不做

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

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

然后在我的主游戏线程中,我会做一些事情,测试某种hit方法中提供的两个对象是否在某个时刻发生冲突,如果是,则执行传递给{{1的第三个参数}}

那么,如果没有将Ship / Bullet实例传递给hit方法,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

我会尝试使用events and listeners在您的库中处理类似的内容。基本上,你会有一个类来检查整个地图的碰撞。如果存在冲突,它会在对象类(例如子弹或船只)中调用一个方法(您实现),告诉它们它们相撞。