LibGDX多个敌人animation

大家好,我有一个关于在屏幕上同时animation多个敌人的问题。

基本上,我想出了如何使用池创造敌人,并在使用后处置等。所有的敌人是相等的,所有的敌人有3个不同的animation创造,移动,摧毁。

一切工作正常,但是当我在屏幕上有多个敌人时,他们都在同一时间animation,即使他们(显然)在不同的时间创建。

例如,我创造了3个敌人,让他们在屏幕上移动,他们都有相同的框架..animation必须是相同的,但我预计他们改变帧的时间应该是不同的。

animation是在Enemy类中实例化的,所以我猜每个敌人的实例都必须有它自己的animation。

这是我如何在Renderer类中绘制它们:

private void drawEnemies(float runTime) { enemyArrayLen = catta.activeEnemies.size; for (int i = enemyArrayLen; --i >= 0;) { currentEnemyAnimation = catta.activeEnemies.get(i).getCurrentAnimation(); batcher.draw( currentEnemyAnimation.getKeyFrame(runTime), catta.activeEnemies.get(i).getX(), catta.activeEnemies.get(i).getY(), catta.activeEnemies.get(i).getWidth() / 2.0f, catta.activeEnemies.get(i).getHeight() / 2.0f, catta.activeEnemies.get(i).getWidth(), catta.activeEnemies.get(i).getHeight(), 1, 1, 0 ); } } 

敌人被存储在catta.activeEnemies数组中。

currentEnemyAnimation是一个“支持”variables,在这个variables中,我把敌人放在了Cicle的每个Cicle中。

这是我如何初始化敌人:

 public void init(float posX, float posY, int width, int height) { this.position.set(posX, posY); this.width = width; this.height = height; this.alive = true; this.enemyRunTime = 0; this.creationTime = 0.8f; this.destructionTime = 0.8f; this.crea_Animation = AssetLoader.enemy_creaAnimation; this.crea_Animation.setFrameDuration(this.creationTime / 4); this.mo_Animation = AssetLoader.enemy_moAnimation; this.des_Animation = AssetLoader.enemy_desAnimation; this.des_Animation.setFrameDuration(this.destructionTime / 4); this.enemyState = EnemyState.CREATING; ... 

也许这是一个运行时间和三角洲问题?

解决,我不得不通过敌人运行时间绘制每个敌人,而不是全球runTime ..像这样:

 private void drawEnemies(float runTime) { enemyArrayLen = catta.activeEnemies.size; for (int i = enemyArrayLen; --i >= 0;) { currentEnemyAnimation = catta.activeEnemies.get(i).getCurrentAnimation(); batcher.draw( currentEnemyAnimation.getKeyFrame(catta.activeEnemies.get(i).getEnemyRunTime()), catta.activeEnemies.get(i).getX(), catta.activeEnemies.get(i).getY(), catta.activeEnemies.get(i).getWidth() / 2.0f, catta.activeEnemies.get(i).getHeight() / 2.0f, catta.activeEnemies.get(i).getWidth(), catta.activeEnemies.get(i).getHeight(), 1, 1, 0 ); } } 

现在每个敌人都独立于其他敌人