egret-docs-master/Lakeshore/manual/example/dafeiji/README.md

202 lines
11 KiB
Markdown
Raw Permalink Normal View History

2024-06-19 13:32:32 +08:00
## 创建一个游戏项目
打开Lakeshore点击菜单“文件”、“新建项目”输入游戏名称和游戏尺寸点击确定。新创建的游戏项目会自动创建一个场景和对应的事件表。如下图所示
![](56b1cbc771383.png)
## 导入图片素材
在“项目”面板中右击“图片”文件夹,点击“添加图片素材”,在弹出的文件选择对话框中选择需要导入的图片。如下图所示:
![](56b1cbc79d210.png)
在“项目”面板中点击导入的图片可以直接预览图片内容和尺寸。如下图所示:
![](56b1cbc7c66d2.png)
## 向场景中添加精灵
选择“项目”中图片文件夹下的一张背景资源,将它拖动到场景中,就创建了一个精灵,在右侧属性栏中设置其名称为“滚屏背景”,并设置其它属性,如下图所示:
![](56b1cbc83fa34.png)
## 添加行为
点击属性栏最下面行为列表中的“添加行为”按纽,弹出“行为列表”属性框,并双击选择“滚屏行为”,即可将“滚屏行为”绑定到”滚屏背景“上,如下图所示:
![](56b1cbc85e2ff.png)
绑定滚屏行为后,我们在行为列表中设置其滚屏方向为向下,如下图所示:
![](56b1cbc8ccc43.png)
通常情况下为了达到无缝滚屏需要弄两张前后或者上下能够无缝连接的图片这里的素材很特殊上下达到了无缝连接这里我们按住”Ctrl“键鼠标拖动”滚屏背景“复制一份”滚屏背景“设置其复制的”滚屏背景“基本属性如下图所示
![](56b1cbc9a5ead.png)
认真对比上面两张图你会发现第一张图中的”滚屏背景“y坐标为-768正好第一张”滚屏背景“连接起来另外复制之后原图与复制的图名称一样且如果原图添加了滚屏行为那么复制后的图也会添加上滚屏行为。
点击 Lakeshore 菜单栏“文件”-“运行”就可以在默认的浏览器中预览这里以chrome为例测试预览中你会发现背景已经能够实现无缝滚屏了如下图所示
![](56b1cbcbace32.png)
## 添加红色战机
按住“项目”面板中图片文件夹下的红色战机,将它拖拽到场景中,选择“红色战机”精灵,可以直接拖拽精灵上的控制点来调整精灵的位置和旋转角度。在右侧属性栏中给精灵命名为“红色战机”,如下图所示:
![](56b1cbcd2597d.png)
## 添加行为
选中当前“红色战机”,在属性栏的最下方“行为列表”中点击“添加行为”。这里我们双击“拖拽行为”即可将“拖拽行为”绑定到此战机上。添加了拖拽行为后,此战机即可在手机上进行拖拽运动了,如下图所示:
![](56b1cbcd81ff9.png)
然后,点击 Lakeshore 菜单栏“文件”-“运行”预览,用鼠标按住“红色战机”拖拽即可测试。如下图所示:
![](56b1cbd016d14.png)
## 添加子弹
按照添加红色战机的操作步骤,选择一个子弹素材,拖拽到舞台。在基础属性栏中取名为”红色战机子弹“。按照“添加行为”操作给这个精灵添加“子弹行为”和“出边界销毁行为”,并在“行为列表”设置子弹行为参数中”设置角度“为”否“,其它默认。如下图所示:
![](56b1cbd27af47.png)
## 添加事件
为了能够让”红色战机“发射子弹因此我们需要通过事件来将其进行关联起来双击”“项目”栏中的事件表“MainSceneEventSheet”,在事件表中创建“红色战机发射子弹事件”,如下图所示:
![](56b1cbd2f328e.png)
## 添加条件
为了能够让“红色战机”能够持续的发射子弹那么我们需要添加相应的条件比如0.1秒发射1颗子弹选择“红色战机发射子弹事件”点击面板右侧条件栏下的“添加条件”在弹出的条件目标面板中选择“System”,如下图所示:
![](56b1cbd37217c.png)
然后在“条件列表”选择“每多少秒执行一次”,如下图所示:
![](56b1cbd4546c5.png)
在弹出的属性设置面板中设定时间间隔为0.1即1秒钟发射10颗子弹如下图所示
![](56b1cbd4b93d1.png)
## 添加动作
注意这个时间单位为秒,设置好条件之后,就需要设置其动作,这里的动作为在“红色战机”所在的位置创建子弹,点击面板右侧条件栏下的“添加动作”,在弹出的动作目标面板中选择“红色战机”,如下图所示:
![](56b1cbd4eeca9.png)
双击“红色战机”后,弹出“动作列表”,在动作列表中选择“制造”,如下图所示:
![](56b1cbd5492a7.png)
双击“制造”动作,在弹出的制造属性面板中选择“红色战机子弹”,并设置其垂直偏移值为-80注意这里的“水平偏移”与“垂直偏移”是相对坐标即相对于红色战机的坐标单位为像素如下图所示
![](56b1cbd63800f.png)
点击 Lakeshore 菜单栏“文件”-“运行”进行预览,即可以看到红色战机连续发射子弹。如下图所示:
![](56b1cbd807974.png)
图26显示子弹是横向发射这是因为我们没有设置子弹发射的角度我们需要添加设置角度的动作点击“添加动作”弹出动作目标选择对话框选择“红色战机子弹”如下图所示
![](56b1cc3ad94ae.png)
双击“红色战机子弹”,弹出动作列表对话框,在动作列表中选择“设置角度”,如下图所示:
![](56b1cc3b14404.png)
双击“设置角度”,弹出设置角度属性面板,修改角度为-90度即方向朝上如下图所示
![](56b1cc3b3bdfd.png)
点击 Lakeshore 菜单栏“文件”-“运行”进行预览,即可以看到子弹已经按照正确的方向朝上发射了。如下图所示:
![](56b1cc3c241db.png)
## 添加敌机与敌机子弹
按照“红色战机”与“红色战机子弹”操作方法我们分别添加“敌人战机”和“敌人战机子弹”并给它们设定“子弹”行为和“出边界销毁”行为注意”出边界销毁“行为有助于提升游戏性能避免内存泄露。并设置“敌人战机”行为列表中“设置角度”为“是”角度为90度使其朝下同样设置“敌人战机子弹”行为列表中“设置角度”为是角度为90度。即“敌人战机”与“敌人战机子弹”运动方向朝下如下图所示
![](56b1cc3cad2d4.png)
同样为了让敌人能发射敌人子弹在MainSceneEventSheet中添加事件“敌人战机发射敌人子弹事件”并给事件添加条件“0.2秒1次”动作“发射敌人战机子弹”如下图所示
![](56b1cc3e463cd.png)
点击 Lakeshore 菜单栏“文件”-“运行”进行预览,即可以看到如下图所示:
![](56b1cc3f9c005.png)
为了让“敌人战机”可以被我方的“红色战机子弹”打到,并产生伤害计算,那么,我们需要给“敌人战机”与“红色战机子弹”分别设置“参与碰撞”为是,选择“敌人战机”,在面板右侧的其它属性栏中设置参与碰撞为“是”,同样,对“红色战机子弹”也一样,如下图所示:
![](56b1cc409675d.png)
为了给“敌人战机”赋予生命我们给“敌人战机”添加自定义属性hp选择“敌人战机”在属性栏“自定义属性”处点击“添加属性”弹出自定义属性对话框设置属性名称为hp,值类型为number,值为10即“敌人战机”初始具有10点血。如下图所示
![](56b1cc422ab13.png)
为了让“红色战机子弹”碰撞到“敌人战机”时“敌人战机”减血即每碰撞一次”敌人战机”的hp减1那么我们需要创建新的事件“红色战机子弹碰到敌人战机时减血事件”并添加条件如下图所示
![](56b1cc4284d2f.png)
双击“红色战机子弹”,在弹出的条件列表中选择“碰撞”,如下图所示:
![](56b1cc43aa9db.png)
双击“碰撞”,在弹出的碰撞属性对话框中选择“敌人战机”,如下图所示:
![](56b1cc4414cab.png)
此时我们添加动作让敌人战机hp减1如下图所示
![](56b1cc44b181d.png)
双击“减法运算”在弹出的“减法运算”属性框选择自定义属性hp,并设置值为1如下图所示
![](56b1cc454b220.png)
到目前为止“红色战机子弹”如果碰到“敌人战机”将会减血但是为了能够在实际效果中预览我们还需要添加事件“敌人战机血量小于等于零后销毁事件”并添加条件如果“敌人战机”hp小于等于0如下图所示
![](56b1cc45c0df4.png)
双击“比较实例变量”在弹出的属性对话框中设置实例变量为hp运算符为小于或等于值为0如下图所示
![](56b1cc462801a.png)
并添加动作“销毁”,先选择“敌人战机”,如下图所示:
![](56b1cc466b81d.png)
双击“红色战机”,选择动作“销毁”,如下图所示:
![](56b1cc46d51cc.png)
此时“敌人战机”当血量hp小于或等于0时销毁如下图所示
![](56b1cc4814e44.png)
预览我们发现,“红色战机子弹”会穿透“敌人战机”,此时,我们需要给“红色战机子弹”添加一个碰到“敌人战机”销毁的动作,选择“红色战机子弹碰到敌人战机时减血事件”这个事件,点击“添加动作”,在动作目标面板中双击选择“红色战机子弹”,并添加“销毁”动作,预览效果,发现“红色战机子弹”打“敌人战机”时不会穿透了,如下图所示:
![](56b1cc4a32bbb.png)
一般情况下战机类游戏都会有许多源源不断的敌人因此我们这里需要创建一个源源不断的敌人事件事件名为在场景中每2秒钟创建1个敌人事件如上面所讲方式添加条件每2秒钟执行一次然后添加动作点击“添加动作”双击选择“System”,并选择“创建对象”,如下图所示:
![](56b1cc5bcf1d1.png)
双击“创建对象”在弹出的创建对象属性面板中选择对象类型为“敌人战机”在水平坐标中输入Math.random()*500,垂直坐标中输入Math.random()*200表达式代表创建的敌人战机位置在水平坐标0~500垂直坐标0~200之间如下图所示
![](56b1cc5c22241.png)
预览发现每隔2秒创建一个“敌人战机”如下图所示
![](56b1cc5d3d891.png)
至此游戏Demo完毕但为了游戏性能与内存我们需要给“红色战机子弹”、“敌人子弹”、“敌人战机”都添加“出边界销毁行为”。
最后,将我们做完的游戏发布即可,选择“文件”-“发布”即可发布我们的游戏,会弹出对话框提示我们要将我们的发布的游戏保存的路径,如下图所示:
![](56b1cc5e2fc10.png)