【发布时间】:2020-06-12 21:13:40
【问题描述】:
我有一个可以发射子弹的精灵。为了射击子弹,我有一个 if 语句来检查他的射击动画是否正在播放,如果是,那么它应该创建一个像这样创建的子弹:
BodyDef bdef = new BodyDef();
bdef.position.set(isaac.ISAACX, isaac.ISAACY);
bdef.type = BodyDef.BodyType.DynamicBody;
b2Body = world.createBody(bdef);
b2Body.setBullet(true);
fdef = new FixtureDef();
shape = new CircleShape();
shape.setRadius(3 / icsGame.PPM);
fdef.shape = shape;
b2Body.createFixture(fdef).setUserData("bullet");
我想出了如何定位子弹的创建位置以及如何将它们分开我只是不知道如何摧毁它们。
if(currentStateShooting == State.NORTH && shootTimer >= SHOOT_WAIT_TIME){
shootTimer = 0;
defineBullet();
b2Body.applyLinearImpulse(0, 3, b2Body.getWorldCenter().x, b2Body.getWorldCenter().y, true);
if(wall.destroyed){
System.out.println("hi");
b2Body.destroyFixture(b2Body.createFixture(fdef));
world.destroyBody(b2Body);
wall.destroyed = false;
}
}
目前 if 语句从 wall 类中获取一个布尔值:
public class wall extends interactiveTileObject {
public static boolean destroyed = false;
public wall(playScreen screen, Rectangle bounds) {
super(screen, bounds);
fixture.setUserData(this);
}
@Override
public void onBodyHit() {
destroyed = true;
}
}
问题是它不会破坏身体。知道为什么会这样吗?有没有更好的方法来做到这一点?
【问题讨论】: