У меня есть оператор if, который проверяет, попал ли мой объект (волшебник) в item
.Если он это сделает, размер волшебника изменится, и он должен быть в состоянии пережить 1 столкновение с препятствием.
Прямо сейчас я застрял в "выживании 1 столкновения с препятствием", потому что в моем методе столкновения янастроил его так, что если InvulnerabilityActive
истинно, то он не должен обнаруживать столкновения.
Таким образом, проблема в том, что в течение всей продолжительности (9 секунд) столкновения с препятствием не обнаружено.Волшебник просто пролетает. Как я могу изменить его, чтобы он не обнаруживал столкновения с первым препятствием, а затем деактивировал предмет?
Я думал об использовании метода Timer.cancel()
, но, как вы можетевидите, я могу ссылаться на него только с ключевым словом this
.Я не могу позвонить Timer.cancel()
, прежде чем использовать сам Timer
.
Вот столкновение с предметом.
try {
invulnerability = new Rectangle(GameWorld.obstacle1.getX() - GameRenderer.generator2.getValue2(),
GameWorld.obstacle1.getY() + GameRenderer.generator2.getValue1(), 15, 15);
if ((Intersector.overlaps(GameWorld.wizard.getBoundingRectangle(), invulnerability))){
GameRenderer.InvulnerabilityActive = true;
activeItem = true;
case0 = true;
GameWorld.wizard.setWidth(8);
GameWorld.wizard.setHeight(8);
new java.util.Timer().schedule(
new java.util.TimerTask() {
public void run() {
this.cancel();
GameRenderer.InvulnerabilityActive = false;
activeItem = false;
case0 = false;
GameWorld.wizard.setWidth(16);
GameWorld.wizard.setHeight(16);
}
},
9000
);
}
} catch (NullPointerException e){
System.out.println("Caught NullPointerException!");
}
Вот столкновение с методом препятствий:
public boolean collides(Wizard wizard) {
if (GameRenderer.InvulnerabilityActive){
return false;
} else {
return (Intersector.overlaps(wizard.getBoundingRectangle(), barUp)
|| Intersector.overlaps(wizard.getBoundingRectangle(), barDown));
}
}
Я знаю, что проблема связана с оператором if, потому что он просто проверяет, активен ли элемент или нет, но я не знаю, как изменить его, чтобы он работал.