javafx中的tree

这是有关使用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

javafx中的tree

javafx中的tree_JavaFX中的塔防(5)相关推荐

  1. javafx中的tree_JavaFX中的塔防(4)

    javafx中的tree 好的,到目前为止,我们已经创建了一个TileMap,将其显示在屏幕上,并使其在第一部分中可编辑. 在第二部分中,我们使用A *算法实现了攻击路径的计算,并使敌人跟随该路径. ...

  2. javafx中的tree_JavaFX中的塔防(6)

    javafx中的tree 因此,我们已经在本教程的第6部分中,与此同时,游戏也取得了长足的进步. 在这一部分中,我们最终将添加一个显示得分的图层,已达到目标的敌人数量,启动下一个Wave的按钮以及用于 ...

  3. javafx中的tree_JavaFX中的塔防

    javafx中的tree 我想长时间使用我的游戏引擎来编写<塔防>游戏,但是由于另一个小组努力创建JavaFX<塔防>游戏,所以我认为我宁愿创建另一款游戏. 从邮件列表中,我了 ...

  4. javafx中的tree_JavaFX中的塔防(2)

    javafx中的tree 在最后一部分,我们创建了一个简单的编辑器,让我们放置炮塔. 现在,我们将在敌人起源处添加一个生成点,并为其定义攻击目标. 首先,我将通过对象层向地图添加更多信息. 这是标准的 ...

  5. javafx中的tree_JavaFX中的塔防(3)

    javafx中的tree 在最后一部分中,您了解了如何创建Sprite,为其设置动画并赋予其Behavior. 但是动画效果不是很好,因为作为Insectoid,您应该总是在飞行的地方看. 记住:安全 ...

  6. 《明日方舟》的塔防元素:是鸡肋还是精髓?

    我曾经不止一次的提到过一款国产的二次元塔防手游--它正是鹰角网络出品的<明日方舟>. 明日方舟 2019年4月30日ios开服,5月1日安卓端开服,几个月内的ios氪金榜多次登顶,这样的赫 ...

  7. JavaFX中的塔防(6)

    因此,我们已经在本教程的第6部分中,与此同时,游戏也取得了长足的进步. 在这一部分中,我们最终将添加一个显示得分的图层,已达到目标的敌人数量,启动下一个Wave的按钮以及用于购买新炮塔的资金. 说到钱 ...

  8. JavaFX中的塔防(5)

    这是本使用FXGameEngine在JavaFX中创建塔防游戏的正在进行的教程的第5部分. 敌人现在飞向目标的攻击路径,炮塔瞄准并射击. 因此,最重要的部分在那里,但是仍然缺少许多细节. 游戏只是开始 ...

  9. JavaFX中的塔防(4)

    好的,到目前为止,我们已经创建了一个TileMap,将其显示在屏幕上,并使其在第一部分中可编辑. 在第二部分中,我们使用A *算法实现了攻击路径的计算,并使敌人跟随该路径. 在第三部分中,我们创建了一 ...

最新文章

  1. 判定是否互为字符重排
  2. 上班请病假还得看AI脸色,10秒钟判别真假,打工人太难了
  3. jquery选中checkbox
  4. python开发安卓程序-python可以编写android程序吗?
  5. 常用机器学习算法原理及推导
  6. 肖像:作家艺术家之一
  7. c语言 异或_编程入门:C语言基础知识全网超全不用到处找了!(文末附清单)
  8. Nature Biotechnology | 单细胞转录组不同建库及数据分析方法的测评结果
  9. 使用Python将字符串转换为格式化的日期时间字符串
  10. 山石网科发布山石云·景产品 安全运维管理进入SaaS模式
  11. 弹出浮层css+JQuery
  12. 【C语言】16-预处理指令2-条件编译
  13. 轻微课好不好?来自轻微课校友的成才经历自述。
  14. 共享单车项目(一)--项目简介
  15. 【C++】关于set的一些奇怪问题:错误C2676 二进制“<”:“const _Ty”不定义该运算符或到预定义运算符可接收的类型的转换
  16. 思维导图一定要用计算机来完成吗,思维导图为什么一定要手绘?
  17. MacVim中文乱码解决
  18. 第一课 request传参
  19. LevelDB Arena源码分析
  20. linux uart寄存器 代替 printk,Linux驱动学习之设备树(设备树下的LED驱动实验),...

热门文章

  1. 计蒜客 91 地铁 HDU 5263 平衡大师(二分+网络流)
  2. 五分钟轻松了解Hbase面向列的存储
  3. 从NIO到Netty开发
  4. java drawimage()方法
  5. 分布式系统架构常识:CAP理论
  6. hibernate正向生成数据库表以及配置——Teacher.java
  7. Oracle数据库基本概念理解(3)
  8. Java8中接口的新特性
  9. 2018蓝桥杯省赛---java---A---10(付账问题)
  10. String转Double