我正在创建回合打底游戏,但我遇到的问题是我想创建一个按钮,可以单击它,然后需要单击目标敌人。
到目前为止,这是我拥有的代码的一部分:
public class FightScreen extends BaseScreen {
LevelScreen previousMap;
Champion fighterOne;
boolean turn = true; //variable to set the turn of the player, if true is players turn, otherwise enemy turn
EnemyFighters enemyOne;
EnemyFighters enemyTwo;
EnemyFighters enemyThree;
boolean firstAttack = false;
public FightScreen(LevelScreen prev){
super();
previousMap = prev;
}
public void initialize() {
//initialize the mapbackground
BaseActor fightBackground = new BaseActor(0,0, mainStage);
fightBackground.loadTexture( "assets/img/dungeon.png" );
fightBackground.setSize(800,600);
//initialize the actors at the screen
fighterOne = new WarriorOne(mainStage);
enemyOne = new BatFighter(mainStage);
enemyTwo = new SkeletonFighter(mainStage);
enemyThree = new ZombieFighter(mainStage);
//create the buttons
uiStage.addActor(fighterOne.getFirstButton());
fighterOne.getFirstButton().addListener(
(Event e) ->
{
if ( !(e instanceof InputEvent) )
return false;
if ( !((InputEvent)e).getType().equals(InputEvent.Type.touchDown) )
return false;
if (!(turn))
return false;
firstAttack = true;
System.out.println("we need a target please!");
return true;
}
);
enemyTwo.addListener(
(Event o) ->
{
if ( !(o instanceof InputEvent) )
return false;
if ( !((InputEvent)o).getType().equals(InputEvent.Type.touchDown) ){
return false;
}
if (firstAttack){
fighterOne.attackOne(enemyTwo);
firstAttack = false;
System.out.println("we delivered the attack! viva");
turn = !turn;
}else
return false;
return true;
}
);
}
public void update(float dt) {
if (!(turn)){
enemyOne.attackOne(fighterOne);
turn = !(turn);
System.out.println("we got attacked by enemy");
System.out.println("Our hero health is: "+ fighterOne.getHP());
}
if (Gdx.input.isButtonPressed(Input.Buttons.RIGHT)){
System.out.println("setting attack to false");
firstAttack = false;
}
}
}
我的问题是,当我按鼠标左键时,fighterOne的eventListener和update中的监听器都是蜂鸣声。
是否有一种方法只能在类的update方法中没有对象被单击时侦听Leftclick?
谢谢。