Java中冲突处理程序的动态方法
我想为我的游戏设置一套碰撞手柄,这样我就不必复制太多代码,也不必缩短存储空间。在一个类中的方法中,对于两个特定的对象,它看起来是这样的Java中冲突处理程序的动态方法,java,android,collision,game-physics,Java,Android,Collision,Game Physics,我想为我的游戏设置一套碰撞手柄,这样我就不必复制太多代码,也不必缩短存储空间。在一个类中的方法中,对于两个特定的对象,它看起来是这样的 //Inside collision class public void checkCollision(Block block, Ball ball){ //do stuff with the variables given } 这意味着我只能检查block+球的碰撞 我的问题是:是否可以更改给定的对象,例如,以便我可以使用相
//Inside collision class
public void checkCollision(Block block, Ball ball){
//do stuff with the variables given
}
这意味着我只能检查block+球的碰撞
我的问题是:是否可以更改给定的对象,例如,以便我可以使用相同的方法,只解析对象,例如地板对象和球,但有时使用块和球
而且有时候地板是不可用的,所以我不能只解析方块和球,如果它想要全部三个
这样我就不用再花钱了
public void collision(Block block, Floor floor, Ball ball){
}
如果你不明白,请询问,
非常感谢
查尔顿桑塔纳如果你有这样的方法怎么办:
// ...
public void checkCollision(Collidable a, Collidable b) {
a.collideWith(b);
}
和一个接口
public interface Collidable {
SomeReturnType collideWith(Collidable coll);
}
在这种情况下,您可以将任何Collidable
与另一个Collidable
方法中处理冲突的方法相冲突
这只是一个想法,还不清楚你想如何达到这个效果。因此,如果你扩展你的答案,我可以进一步帮助你。使方法过载
public void collision(Block block, Floor floor, Ball ball){
//do stuff
}
public void collision(Floor floor, Ball ball){
//do stuff
}
public void collision(Block block, Ball ball){
//do stuff
}
您可以使用集合和泛型,如:
public void void checkCollision(List<? extends Collidable> objects) {
// test whatever you want
}
公共作废检查冲突(ListOverloading将导致重载方法的激增。他必须用继承或策略模式imho来解决这个问题。好吧,这很好,我只是想,如果我这样做,我必须为每个级别做一个方法……在每个方法中,我将有大约50行代码,我计划有很多级别。同意吗有了这个,我将用一个静态void CheckCollision(Collidable[]objects)方法编写一个CollisionHandler类,在那里您可以决定如何划分对象等等。。。