我有
GunSystem class
这个系统处理我的玩家的武器处理。
class GunSystem extends IteratingSystem implements Gun{
super(Family.all(GunComponent.class, ...).get());
@Override
protected void processEntity(Entity entity, float deltaTime) {
updateGun();
onReload();
onFire();
}
private void updateGun() {
// Textures, Position, Size ..
}
}
默认情况下,当
Gun
连接到Player
时,枪会自动重新装弹。所以玩家可以立即开枪。
Gun gun = new Gun();
Player player = new Player();
player.setWeapon(gun)
// class:Player, method:onFire()
Gun gun = player.getWeapon();
gun.fire() // or gun.trigger();
// class:GunSystem, method:onReload();
gun.reload(); // reload the gun for half a second, before the gun can be fired again.
担忧
因为我使用的是 libGDX - Ashley ECS (Entity Component System) Framework,所以我想充分利用它的类。目前我主要关心的是扩展抽象
GunSystem
的IteratingSystem
。你们可能会建议我如何在重新加载时锁定枪支,然后才能再次扣动扳机。
我试过的
// onReload
if(gun.reload) {
if (timer < 0.5f) {
timer += deltaTime;
} else {
gun.reload(spatialX, spatialY);
gun.reload = false;
}
}
// onFire
if(gun.triggered){
gun.fire();
gun.triggered = false;
gun.reload = true;
}
问题
在第二次玩家触摸时,即使
onFire
仍然很忙,onReload
方法也会被调用。
目标