0
我正在尝试自定义碰撞器类,您可以在其中将两个对象传递给方法,并且如果两者中的任何一个发生碰撞,请执行某种操作。对象而不是实例的碰撞测试
例如,我想提出一个射击游戏,和我想要做的是说:
- 如果任何
Ship
碰撞与任何子弹Bullet
- 毁坏两个受影响
Ship
和影响Bullet
- 毁坏两个受影响
- 否则
- 什么都不做
我想要做的就是一次写这个,而不是每颗子弹和/或船舶。所以,我想这样做是这样的:
ColliderEvent collide = new ColliderEvent();
collide.hit(Ship, Bullet, new Runnable(){
@Override
public void run(){
// Destroy bullet and ship here
}
});
然后在我的主要游戏线程,我会做一些事情,将测试如果某种hit
方法进行了规定,两个物体碰撞在某些时候,和如果是的话执行第三个参数传递到hit
所以,有没有办法做到这一点,而不通过船舶/项目符号的实例hit
方法?
假设一艘船比一颗子弹大,你可以创建一个“位置”对象,让一艘船返回一个“Set”方法并检查一个子弹的位置是否包含在船的位置集中?这当然意味着'Position'正确地实现了'equals()'和'hashCode()'... –
fge
我同意..如果你想,你可以为所有对象创建一个onCollision()函数并实现它在一个超类。 – Joel
我觉得你只是想为每个船舶/子弹组合执行这种方法。两个嵌套循环将完成此操作。 –