我本来不会说英语,所以请耐心地说我和我的英语。我用碰撞方法制作了太空入侵者游戏。当子弹击中墙壁或敌人时,我应该把它们放在哪里?我应该为它们创建一个全新的类,还是只使用Enemy类和Wall类将碰撞方法放在某处?
这是我目前在Enemy课程中的碰撞方法,只是为了向您展示我的意思和我在做什么。我正在努力制作清晰易读的代码,可以很容易地重复使用。
public boolean collide(int i, Player player, BasicBlocks blocks,
ArrayList<EnemyTypeBasic> enemies) {
if (enemySprite.isPlay()) {
if (enemies.get(i).deathScene()) {
enemies.remove(i);
}
return false;
}
for (int w = 0; w < player.playerWeapons.weapons.size(); w++) {
if (enemies != null
&& player.playerWeapons.weapons.get(w).collisionRectangle(
((EnemyTypeBasic) enemies.get(i)).getRect())) {
enemySprite.resetLimit();
enemySprite.setAnimationSpeed(120);
enemySprite.setPlay(true, true); // Object needs to be destroyed
GameScreen.SCORE += 8;
GameScreen.lives = 3;
return true;
}
}
return false;
}
非常感谢你!
答案 0 :(得分:0)
哪些物品可以碰撞?如果子弹和其他对象之间只发生碰撞,则你的collide()方法属于表示项目符号的类。
我认为更有可能,并且从长远来看会更有用的是,你会遇到多种可能发生冲突的事情。也许子弹与船只碰撞,但最终你可能希望船只与其他船只或墙壁发生碰撞。在这种情况下,定义像这样的抽象类是有意义的
http://stackoverflow.com
然后,所有可能与其他类型冲突的类型都会扩展您的抽象类,例如:
public abstract class Collidable {
public boolean collide(Collidable other) {
// Here is your logic to check whether *this* is colliding with *other*
// You will probably need to pass in additional arguments to determine collisions
}
}
当你想检查两件事是否发生碰撞时,你可以称之为或等同物:
public Player extends Collidable {
// ...
}
public EnemyTypeBasic extends Collidable {
// ...
}
public Bullet extends Collidable {
// ...
}