当前位置: 首页 > news >正文

免费网站容量大自动优化网站建设咨询

免费网站容量大,自动优化网站建设咨询,网站的设计与应用论文,牛商网网站做seo好么介绍 这是与JavaFX 2游戏教程相关的六个部分系列的第四部分。 如果您错过了第1部分 #xff0c; 第2部分或第3部分 #xff0c;我建议您在开始本教程之前仔细阅读它们。 回顾一下#xff0c;在第3部分中#xff0c;我为您提供了许多经典街机风格游戏和所使用的不同输入设备… 介绍 这是与JavaFX 2游戏教程相关的六个部分系列的第四部分。 如果您错过了第1部分 第2部分或第3部分 我建议您在开始本教程之前仔细阅读它们。 回顾一下在第3部分中我为您提供了许多经典街机风格游戏和所使用的不同输入设备的历史记录。 然后我向您展示了如何创建类似于著名街机“小行星”的简单游戏。 但是控件船的移动与PC游戏“星际争霸”的控件更为相似。 在第3部分中您应该对如何从键盘和鼠标接收输入有很好的了解。 图1 JavaFX 2游戏教程第4部分 本教程的内容是调整第2部分的游戏引擎并更新第3部分中现有的“ Asteroids”风格的游戏以处理碰撞检测。 在本教程中我将简要讨论精灵以及如何处理碰撞检测。 现在飞船将具有产生力场的能力以保护自己免受敌人和小行星的伤害。 这让人想起经典的街机“ 小行星豪华版 ”。 如果要运行演示请向下滚动并单击下面的WebStart按钮。 在启动游戏之前请先阅读要求。 什么是雪碧 根据Wikipedia的说法“ 子画面是整合到更大场景中的二维图像或动画。” 从Java游戏世界的角度来看子画面是一个对象其中包含图像帧和基于要动画化到场景区域上的演员的上下文的其他数据。 在沃尔特·迪斯尼 Walt Disney时代 用铅笔和纸画漫画时艺术家制作了许多图画成为了动画。 这个例子指向了翻书的创建。 我确定您小时候就已经制作了翻书。 我知道我做到了 我曾经在笔记本的各个角落进行涂鸦和制作炫酷的动画。 在我们的Asteroid型游戏中我创建了一个sprite对象其中包含像翻书一样预先旋转的飞船的所有图像 ImageView 。 为了使船转弯具有动画效果我使当前帧可见而其余帧不可见。 与翻书类似它似乎围绕其中心枢轴点旋转。 子画面还可以包含其他信息例如速度或健康点。 碰撞检测 当演员或小精灵在整个场景中设置动画时游戏引擎将检查每个小精灵是否与其他小精灵相互冲突以确定它们是否相互碰撞。 此过程应该非常有效尤其是当您在屏幕上移动大量精灵时。 在效率方面需要权衡。 因为游戏循环中的每个循环都会检查碰撞所以更精确通常会降低性能。 许多游戏会使用图像的边界区域来确定两个精灵是否相互碰撞。 一些游戏使用矩形作为边界区域。 下面的图2中显示了两个精灵碰撞 图2边界框为矩形碰撞区域。 我敢肯定到现在为止当围绕角色的像素是透明的时游戏中的大多数角色图像都不会显示为矩形。 但是即使像素是透明的演员或图像的确是矩形的。 图3描绘了一个演员图像 那些使用矩形边界区域的游戏通常会在精灵图像中刻出边界框。 如图4下方所示两个矩形边界区域橙色和绿色被刻在宇宙飞船图像中。 图4两个用作碰撞边界框的矩形。 我相信您会注意到船和机翼的鼻尖没有被任何一个边界盒覆盖。 这意味着当小行星与子画面的无界区域重叠时不会发生碰撞。 有些游戏使用这种策略。 您会注意到子画面的矩形边界区域很小并放置在子画面图像的关键区域中。 对于多边形和其他非矩形形状使用更好的算法会发现更高的精度。 在此博客文章中我基本上将圆形用作边界区域而不是矩形。 我本可以使每个精灵包含一组碰撞形状但我选择为每个精灵只设置一个碰撞区域。 每个碰撞区域在场景图上将为圆形。 对于宇宙飞船我根据飞船的中心点划了一个圆圈半径扩展到了飞船的驾驶舱。 下图5中显示了该船的有界圆形碰撞区域用红色圆圈表示。 图5船舶的碰撞区域。 我选择一个圆作为边界区域是因为相对容易根据距离公式 勾股定理 确定两个对象的碰撞该距离公式仅需要每个子图形的边界区域的中心点及其半径。 在基于两个中心点计算距离之后您将比较结果以查看它是否小于或等于两个半径的总和。 如果结果确实小于或等于两个半径的总和则发生了碰撞。 图6描述了距离公式如何与圆形边界区域的两个中心点相关。 图6两个中心点之间的距离公式。 以下代码从GameWorld类创建主游戏循环 Overridepublic void handle(javafx.event.ActionEvent event) {// update actorsupdateSprites();// check for collisioncheckCollisions();// removed dead thingscleanupSprites();} 下面的代码从GameWorld类创建checkCollision方法 protected void checkCollisions() {// check other sprites collisionsspriteManager.resetCollisionsToCheck();// check each sprite against other sprite objects.for (Sprite spriteA : spriteManager.getCollisionsToCheck()) {for (Sprite spriteB : spriteManager.getAllSprites()) {if (handleCollision(spriteA, spriteB)) {// The break helps optimize the collisions// The break statement means one object only hits another// object as opposed to one hitting many objects.// To be more accurate comment out the break statement.break;}}}} 派生的Game World TheExpanse 类对其handleCollision方法的实现 /*** How to handle the collision of two sprite objects.** param spriteA Sprite from the first list.* param spriteB Sprite from the second list.* return boolean returns a true if the two sprites have collided otherwise false.*/Overrideprotected boolean handleCollision(Sprite spriteA, Sprite spriteB) {if (spriteA ! spriteB) {if (spriteA.collide(spriteB)) {if (spriteA ! myShip) {spriteA.handleDeath(this);}if (spriteB ! myShip) {spriteB.handleDeath(this);}}}return false;} Sprite类使用距离公式的collide方法的默认实现 public boolean collide(Sprite other) {if (collisionBounds null || other.collisionBounds null) {return false;}// determine its sizeCircle otherSphere other.collisionBounds;Circle thisSphere collisionBounds;Point2D otherCenter otherSphere.localToScene(otherSphere.getCenterX(), otherSphere.getCenterY());Point2D thisCenter thisSphere.localToScene(thisSphere.getCenterX(), thisSphere.getCenterY());double dx otherCenter.getX() - thisCenter.getX();double dy otherCenter.getY() - thisCenter.getY();double distance Math.sqrt(dx * dx dy * dy);double minDist otherSphere.getRadius() thisSphere.getRadius();return (distance minDist);} Sprite类的handleDeath方法的默认实现 public void handleDeath(GameWorld gameWorld) {gameWorld.getSpriteManager().addSpritesToBeRemoved(this);} Atom 小行星或导弹类将覆盖handleDeath方法 public void handleDeath(GameWorld gameWorld) {implode(gameWorld);super.handleDeath(gameWorld);} JavaFX 2 Sprite和碰撞演示 这个简单的演示游戏将是星际争霸和小行星之间的混合体。 使用鼠标导航飞船时您会注意到控件类似于StarCraft的Battle Cruiser 。 目的是在武器撞击您的飞船或其他因撞击而爆炸的球体之前向它们发射武器。 由于这是一个简单的教程甚至是处于开发初期的游戏因此该游戏无法跟踪得分。 我鼓励您去GitHub下载代码并增强游戏。 为了简洁起见我不会显示所有代码更改但是我相信您会在这里访问GitHub https //github.com/carldea/JFXGen以获取所有演示和源代码。 要求 Java 7或更高版本 JavaFX 2.1或更高版本 Windows XP或更高版本应该很快可用于Linux / MacOS 一个简单的小行星类型游戏名为“ The Expanse”。 说明 右键单击在Windows上以飞船。 单击鼠标左键在Windows鼠标上单击鼠标左键即可射击武器。 按键2 变成大型导弹。 蓝色圆形弹丸 其他按键默认为较小的导弹。 红色圆形弹丸 按下空格键将切换力场以保护飞船免受敌人和小行星的伤害。 单击下面的启动按钮以启动演示 继续本教程的第5部分 。 相关文章 Sprite的定义 http : //en.wikipedia.org/wiki/Sprite_%28computer_graphics%29 沃尔特·迪斯尼Walt Disney http : //en.wikipedia.org/wiki/Walt_Disney 如何制作翻书 http : //www.bitrebels.com/design/how-to-create-a-flip-book/ JavaFX的ImageView http : //docs.oracle.com/javafx/2/api/javafx/scene/image/ImageView.html 碰撞检测http: //zetcode.com/tutorials/javagamestutorial/collision/ Java中的AABB碰撞检测 http //www.youtube.com/watchv JIxV-LXqa1g 勾股定理 http : //en.wikipedia.org/wiki/Pythagorean_theorem 距离公式 http //en.wikipedia.org/wiki/Distance 严肃的Asteroids Deluxe游戏Youtube http : //www.youtube.com/watch?v 6DG-GJENHgg 参考来自我们的JCG合作伙伴 Carl Dea的JavaFX 2 GameTutorial第4部分 位于Carls FX Blog博客上。 翻译自: https://www.javacodegeeks.com/2012/06/javafx-2-gametutorial-part-4.html
http://www.pierceye.com/news/979874/

相关文章:

  • 徐州cms模板建站液压电机东莞网站建设
  • 阿里巴巴国际站运营工作内容北京软件开发公司排行榜最新
  • 电子商务网站的开发流程包括泉州seo建站
  • 微信h5商城网站开发米拓模板网站建设
  • 品牌网站设计案例wordpress 实例
  • 郑州大学科技园手机网站建设wordpress 新手指南
  • 国外免费建站网站搭建南阳网站排名优化报价
  • 中国排名高的购物网站免费软件下载网站有哪些
  • 云服务器做视频网站石家庄软件定制开发
  • 好的外贸网站的特征如何快速的制作h5页面
  • 徐州建站程序南京制作网页培训学校
  • 广州市服务好的网站制作排名北京网站建设公司哪个最好
  • 网站调用谷歌地图灌云网站制作
  • 做的网站能撤掉吗济南好的网站建设公司排名
  • 北京智能建站系统价格江西省住房建设厅统计网站
  • 中山建设网站官网郑州做网站排名公司
  • 怎么把自己做的网站放到百度上网页该如何推广
  • 军事网站大全军事网金蝶软件公司官网
  • 哪些网站用c 做的南宁有做门户网站的公司吗
  • 濮阳网站建设陈帅wordpress 调用用户头像
  • 旅游自媒体网站怎么做个人创业做网站
  • 语音识别程序代做网站网站运营策略如何做
  • 怎么做淘宝网站赚钱吗wordpress个性用户
  • 通州郑州阳网站建设wordpress发表的文章在页面找不到
  • 网上订货发货网站建设3d建模用什么软件
  • 广州房地产网站建设方案推广你公司网站
  • 较好的网站建设公司网站备案填了虚假座机能过吗
  • 网站权重是怎么提升的node怎么做网站
  • 珠海哪家做企业网站公司好网站开发常用图标 图像
  • 上海先进网站设计丹阳如何做百度的网站