我正在进行垂直射击游戏,我遇到了碰撞检测问题。通过矩形方法“交叉”检测碰撞,但为了跟踪可能发生碰撞的一切,我需要Arraylists跟踪所有子弹和敌舰。 Enemy和Player类都产生了Bullets(它们也有自己的类)所以我想在我的GameView类中有2个不同的Arraylists(它控制着游戏图形,当我在这里完成时会发生碰撞)。
什么是允许子弹在生成时添加到各自的ArrayLists的最有效方法?
Bullet类:
public class Bullet extends Location{
private Fights bulletOwner;
private int damage;
private int velocity;
public Bullet(Fights owner, int dmg, Rectangle loca)
{
super(loca);
bulletOwner = owner;
damage = dmg;
}
public Fights getOwner(){return bulletOwner;}
public int getDamage(){return damage;}
public int getVelocity(){return velocity;}
}
位置等级
import java.awt.Rectangle;
public class Location {
protected Rectangle loc;
public Location (Rectangle location)
{
loc = location;
}
public Rectangle getLocation()
{
return loc;
}
public void updateLocation(Rectangle location)
{
loc = location;
}
}
答案 0 :(得分:2)
你可以拥有一个具有位置的arraylist的GameState类,并将GameState实例作为参数传递给Location派生类的构造函数。
答案 1 :(得分:1)
此外,由于您的问题询问产生子弹对象的效率,请查看原型和工厂模式。