如果 Greenfoot 中的 Actor 在顶部,则移除该 Actor
Remove an Actor in Greenfoot if he´s on the top
我在 Java 中与 Greenfoot 建立自己的 Space Invaders,我有一艘 Spaceship 可以射击外星人,但子弹停在地图顶部并留在那里,所以我写了这个方法,如果它击中顶部但它不起作用,它应该移除子弹。有什么问题?
public void disappearIfOnTop() {
Actor Bullet = getOneIntersectingObject(Actor.class);
getY();
if(getY() == 0) {
World world;
world = getWorld();
world.removeObject(Bullet);
}
}
编辑:如果它们击中了卡在顶部的另一颗子弹,它们就会被移除。
方法getOneIntersectingObject()
returns一个null
如果没有其他演员。
您可能需要检查一下以确保:
public void disappearIfOnTop() {
if (getY() == 0) {
Actor bullet = getOneIntersectingObject(Actor.class);
if (bullet == null) {
setLocation(getX(), 50); // move down if no other is around
} else {
setLocation(getX(), 100); // move further down if another is around
}
}
}
如果方法 getOneIntersectingObject()
returns 引用了一个演员,您当前的方法是删除 that 一个,而不是 Y= 处的那个0。 (顺便说一句,不要使用以大写字母开头的变量名。按照惯例,这是为 类 保留的。)
您可以将方法简化为:
public void disappearIfOnTop() {
if (getY() == 0) {
getWorld().removeObject(this);
}
}
我在 Java 中与 Greenfoot 建立自己的 Space Invaders,我有一艘 Spaceship 可以射击外星人,但子弹停在地图顶部并留在那里,所以我写了这个方法,如果它击中顶部但它不起作用,它应该移除子弹。有什么问题?
public void disappearIfOnTop() {
Actor Bullet = getOneIntersectingObject(Actor.class);
getY();
if(getY() == 0) {
World world;
world = getWorld();
world.removeObject(Bullet);
}
}
编辑:如果它们击中了卡在顶部的另一颗子弹,它们就会被移除。
方法getOneIntersectingObject()
returns一个null
如果没有其他演员。
您可能需要检查一下以确保:
public void disappearIfOnTop() {
if (getY() == 0) {
Actor bullet = getOneIntersectingObject(Actor.class);
if (bullet == null) {
setLocation(getX(), 50); // move down if no other is around
} else {
setLocation(getX(), 100); // move further down if another is around
}
}
}
如果方法 getOneIntersectingObject()
returns 引用了一个演员,您当前的方法是删除 that 一个,而不是 Y= 处的那个0。 (顺便说一句,不要使用以大写字母开头的变量名。按照惯例,这是为 类 保留的。)
您可以将方法简化为:
public void disappearIfOnTop() {
if (getY() == 0) {
getWorld().removeObject(this);
}
}