大致看了一遍Egret的官方文档,就开始打算使用Egret来开发一个打飞机游戏. 首先来捋一捋思路,先来看一看一个打飞机游戏的图片 基本上一个打飞机游戏分为 开始游戏   ----------进入游戏的第一个显示对象.必须点击开始游戏界面的开始游戏,才能进入游戏去开始玩 背景   ------背景我们就用两个图片来循环滚动 敌机  -------随机出现N个敌机,并且会不停的发射子弹 猪脚 -------猪脚也会不停的发射子弹 敌人的子弹  ------由敌机发出的子弹,向下飞 猪脚的子弹  …
上一章把飞机添加到屏幕上,但是飞机要发射子弹对吧?那么这一章我们就来实现一下发射子弹,并实现一个简单的子弹对象池 先来捋一捋思路 1.创建一个子弹对象 2.然后添加一个bitmap,显示子弹贴图 3.判断子弹类型(我们这里是一个子弹是敌人和主角都在使用,根据不同的状态类型,显示不同的图和往不同的方向飞行) 4.子弹回收(回收子弹的意思就是把子弹状态还原,并且从界面中移除) 5.子弹对象池的设计(综合上面四点,设计一个简单的对象池) 6.主角发射子弹 首先,我们先新建一个IdentityType.…
今天继续写点击了开始之后,添加一个飞机到场景中,然后这个飞机的尾巴还在冒火的那种感觉 先拆解一下步骤 1.首先完成飞机容器的图片加载 2.然后把容器添加到场景中 3.然后实现动画 -首先,我们新建一个TypeScript的类叫做HeroObject,英雄对象,哈哈,我命名水平不怎么高.然后继承自egret.DisplayObjectContainer class HeroObject extends egret.DisplayObjectContainer { _textures: egret.…
在游戏过程之,敌机是源源不断的冲屏幕上方往下飞,如果我们每一架敌机都直接new的话,在飞机很多的情况下,也许有性能问题. 就像前面子弹对象池一样,我们也要实现一个飞机对象池,也就是标题说的敌机工厂(之所以叫工厂,我觉得飞机是从工厂里面生产出来的,没有飞机冲池子里面捞出来吧...所以叫工厂.当然叫敌机对象池也没啥问题) 新建一个EnemyFactory.ts文件 class EnemyFactory extends egret.DisplayObjectContainer { _timer: eg…
有了子弹,总得有敌人来打吧,不然游戏有啥意思呢?今天我们来实现敌机从屏幕上边往下飞 参考微信打飞机游戏里面,敌机分为3种 1是特小飞机,2是小飞机,还有一种就是大飞机 面向对象编程提倡抽象,实现代码复用的目的.所以我们打算把飞机的相同的点都抽象到飞机基类里面. 新建一个文件EnemyPlane.ts,敌机类,以后我们所有的飞机,都从这个类来扩展 class EnemyPlane extends egret.DisplayObjectContainer { _enemy: egret.Bitmap…
游戏背景里面的猪脚飞机看起来是一直在向前飞,但是实际上只是一个视觉差而已. 猪脚是出于不动的状态,背景从上到下滚动,然后让玩家觉得飞机在不停的往前飞.(当然这只是其中一种实现思路) 差不多就是这样,然后两张图片一直滚动,上面的图,滚动到最底下,马上又跑到最上面去,一直循环,就有了一个滚动的效果 然后我导入了一张背景图 然后重新打开我们的BgContent.ts文件,把里面的黑色背景的代码×掉,然后改为 bgbitmap1: egret.Bitmap; bgbitmap2: egret.Bitma…
打开 Egret Wing,新建一个Egret游戏项目,然后删掉默认生成的createGameScene方法里面的东西 然后新建一个BeginScene.ts的文件,作为我们的游戏的第一个场景 class BeginScene extends egret.DisplayObjectContainer { public constructor() { super(); this.addEventListener(egret.Event.ADDED_TO_STAGE, this.Init, this…
运行起来,虽然主角飞机和敌机都在互相发射子弹,但是子弹打中了就和没打中效果是一样的.. 这一章我们就来处理子弹和飞机的碰撞问题. 我们所有的操作都是基于Main这个容器来做的.所以我就把这个处理放到Main里面,监听Main的ENTER_FRAME事件 this.addEventListener(egret.Event.ENTER_FRAME, (e) => { //判断子弹是否和飞机碰撞 let isHit = this._bullets.IsHit(this._Hero) // consol…
经过前面几章的准备,我们差不多已经具备了一个基本的框架,这一章我们就开始添砖加瓦了. 敌机定时发射一个子弹,子弹的方向是从上到下,但是发射子弹的代码应该放在哪儿呢? 从面向对象编程的思想来说,子弹是敌机发射的,我们发射子弹的操作应该放在敌机类里面.也就是EnemyPlane.ts.之所以放在敌机的基类里面,就是想能实现代码复用,加入要实现其他的敌机,也可以复用这段代码 在EnemyPlane.ts的构造方法中,我们加入一个Timer this._timer = new egret.Timer(1…
我记得之前谁说过,大部分程序员入行,都是因为小的时候的游戏机啊,各种电子设备啊....觉得有意思,才入的行 . 至少我本人是因为之前上高中那会儿,喜欢玩手机.那会儿还是MTK,塞班的时代,喜欢拿着手机去各种论坛下载破解版的游戏,没日没夜的玩啊,各种打杀啊,然后后面就毅然决然的入了这行..... 但是工作快四年了,也没写过一个游戏,大多是做一些增删改成为主的web项目和一些自己都不会去用的APP. 下半年的时候,突然想咸鱼翻一下身,想学习一下写游戏.于是就开始之前的Mono Game的学习,学之前…