营销型网站建设要,请问去哪里学编程比较正规,长沙住房建设部网站,中企动力企业z云邮登陆这是本使用FXGameEngine在JavaFX中创建塔防游戏的正在进行的教程的第5部分。 敌人现在飞向目标的攻击路径#xff0c;炮塔瞄准并射击。 因此#xff0c;最重要的部分在那里#xff0c;但是仍然缺少许多细节。 游戏只是开始而没有给我们机会为下一个浪潮做准备。 它不显示分数… 这是本使用FXGameEngine在JavaFX中创建塔防游戏的正在进行的教程的第5部分。 敌人现在飞向目标的攻击路径炮塔瞄准并射击。 因此最重要的部分在那里但是仍然缺少许多细节。 游戏只是开始而没有给我们机会为下一个浪潮做准备。 它不显示分数实际上还没有分数。 浪潮永无止境您无法赢或输。 因此我们需要向HUD和控件添加一些游戏逻辑。 我们还需要查看敌人的损坏状态。 最后一个是功能我们将在本教程的这一部分中进行介绍。 StackedRenderer 因此让我们从敌人状态开始。 我们可以将它们添加到额外的HUD层中因为这就是HUD的用途但是我准备通过渲染器来实现。 每个精灵都有一个当前的渲染器。 您可以切换渲染器这就是SpriteActions的功能我们将在其他教程中介绍但是您一次只能拥有一个活动的渲染器。 在我们的EnemySprite中它是LookAheadTileSetAnimation。 为了允许渲染器的组合可以使用StackedRenderer类。 它允许您堆叠无限数量的Renderer并在每次方法调用时简单地将它们委托给它们。 因此我们可以创建一个简单的HealthBarRenderer并使用它 public class HealthBarRenderer implements Renderer {Override
public boolean prepare(Sprite sprite, long time) {
return true;
}Override
public void render(Sprite sprite, GraphicsContext context, float alpha, long time) {
EnemySprite enemySprite (EnemySprite) sprite;
double health enemySprite.getHealth();
double maxHealth enemySprite.getMaxHealth();
if (health maxHealth) {
return;
}int width sprite.getWidth();
int height sprite.getHeight();
double percent health / maxHealth;
context.setFill( Color.rgb(200,200,200,.5));
context.fillRect(4(width / 2), 10(height / 2), (width / 2), 4);context.setFill( Color.rgb(0,255,0,.5));
if (percent .5) {
context.setFill(Color.rgb(255,255,0,.5));
}
if (percent .2) {
context.setFill(Color.rgb(255,0,0,0.5));
}
context.fillRect(4(width / 2), 10(height / 2), (width / 2 * percent), 4);
}
} 我们在StackedRenderer中使用它 final TileSetAnimation tileSetAnimation new LookAheadTileSetAnimation(enemy1, new int[]{0, 1, 2, 3, 4, 5}, 10f);
final StackedRenderer stacked new StackedRenderer(tileSetAnimation, new HealthBarRenderer()); 这就是我们得到的 在下一部分中我们将添加HUD。 翻译自: https://www.javacodegeeks.com/2014/03/tower-defense-in-javafx-5.html