前言

为了更快体验做出游戏的快乐,我们可以直接采用construct3 提供的游戏模板。这里我用的是基础模板中的塔防游戏。我们在这个的基础上加进来“植物大战僵尸”的一些元素,包括内容和玩法。

step1.背景图设置

为了更贴近游戏主题,我们首先修改背景图,将原背景换成“植物们”的草坪。如图

双击Wall,导入背景图

关掉背景编辑器,背景修改完成

step2.添加新元素

双击空白处,选择出现界面中的Sprite创建元素

此时页面不会有什么变化,再次左键单击空白处,出现动画编辑器,此时将要添加的元素图像导进,关闭编辑器。

关闭后,在右上角的项目中找到刚创建的元素,左键单击,在左边的属性中修改有关属性,如,修改元素名称、大小等,注意,此处的修改将应用于所有实例对象,而在场景中的修改只应用于单个实例对象。



这里由于“豌豆射手”的功能是炮台,所以还需给它添加行为,在右上角项目中找到“豌豆射手”,右键编辑行为,添加新行为,选择炮台,成功添加后,如图

此时再回到左侧属性处修改炮台的属性值,如图

“寒冰射手”,僵尸,子弹的创建流程相同,此处便不再多说。注意,僵尸的行为时“寻路”“闪烁”;子弹的添加的行为是“子弹”;另外新建元素时生成的实例对象不可以删掉,否则无法再对该对象进行实例化,通常可以通过复制粘贴进行实例化。

此处我还添加了其他4个对象



plant1,plant2用于后面点击购买植物操作,“begin”:开始游戏,“pause”:暂停出怪

好了,现在基本元素添加完毕,可以进入最激动人心的环节了-游戏设计。

step3.游戏设计

先说下设计的蓝图。

僵尸:出现速度和生命值都随时间的增加而增加,当僵尸到达终点,会随机销毁一个豌豆射手和一个寒冰射手;

豌豆射手:攻击僵尸,减少其生命值直至销毁僵尸;

寒冰射手:更强大的攻击能力,更快的攻击速度,更广的攻击范围,同时带有减速效果;寒冰射手可直接购买也可以由豌豆射手升级得到

此处角色的设计跟植物大战僵尸中的有些不同,不过,这也正是设计游戏的快乐,不是吗~

蓝图绘制好了,就可以开始实现了;此时不得不说construct3对入门者的友好了,不用学习新的语言,也不用辛苦的打代码。

首先先新建分组,一个好的分组可以让游戏逻辑更加清晰;这里将僵尸和两种植物的实现分开。

首先是对游戏的控制:

设置全局变量Begin,当游戏开始是置为True,暂停时置为false;

具体实现:添加事件到“Enemy control”->Touch->轻按对象->目标选择对象“Begin”->完成,添加动作->系统->设置布尔值->变量:Begin,值:True->完成。

这样就创建好一个事件了。Pause事件创建同上。

僵尸的实现:

游戏开始后每过一段时间都会生成新的僵尸,所以事件的条件是时隔和游戏开始;出怪,也就是在图层上生成僵尸的实例对象,之后实例对象要到达终点,就要寻路,还要有寻路的初始速度、加速度和最大速度。设置好了之后就要让僵尸沿路线移动。具体实现如图

为了降低游戏难度,这里设置了每隔EnemySpawnTime秒金币加1。

添加多个条件的方法:右键已有条件->添加其他条件

添加动作的流程:添加动作->选择动作的对象->修改对象动作->修改参数

注意“系统”对象的使用;

注意坐标值最好不要用具体的数值,否则修改起来麻烦且容易出错。

僵尸生命值,出现速度随时间变快

实现:每过一段时间增加health,减少EnemySpawnTime

僵尸受到攻击

实现:受到攻击时生命值减少(可能还会减少速度),当生命值<=0时僵尸对象销毁,销毁时生成BulletlmpactParticles对象作为特效,同时增加金钱数量和游戏分数

僵尸到达终点,自己消失,随机销毁一个豌豆射手和一个寒冰射手

实现:销毁僵尸实例对象,同时随机销毁一个豌豆射手实例对象和一个寒冰射手实例对象

豌豆射手的实现

被添加到场景中时,锁定目标,发射子弹;如果攻击范围内没有目标则销毁子弹

添加豌豆射手到场景

首先确定金额是否足够;购买的直接结果是对应的布尔值plant1置为true,此时应该设置plant2为false,这样将以最后一次购买为准,防止同时买了两种射手;购买成功后在场景中点击才生成实例对象,此时plant1应重新设为false,同时金钱减少;

如果新买的所放位置本来就有,视为购买失败,此时应该返回金额,并销毁对象;由于销毁对象时无法区别原有的和新的,所以两个都会被销毁,此时应该再创建新的对象。



寒冰射手的实现

寒冰射手的实现跟豌豆射手几乎一致,所以直接附上实现

关于得分,金钱数以及购买界面



购买界面的图片即plant1,plant2:添加元素后的实例对象直接放在目标位置就可以了

文字:空白处双击左键,选择Text,再次单击左键,双击生成的文本框,修改文本内容;这样,无需改变的文本就设置好了;

对于时时改变的文本:回到事件编辑界面,添加事件,让系统在每一帧都更改文本内容

现在,一个新的小游戏就完成了。

看完整个流程,是不是觉得原来开发小游戏其实也不难,那就快上机试试吧~

这里小编附上这个游戏的链接,大家亲自可以感受一下效果~

植物大战僵尸塔防版

如何在construct3上开发游戏&游戏展示的更多相关文章

  1. 如何在 VS2015 上开发 Qt 程序

    所有Qt版本下载地址: http://download.qt.io/archive/qt/ 所有Qt Creator下载地址: http://download.qt.io/archive/qtcrea ...

  2. 在SAE分布式服务上开发需要解决的问题

    这是在开发“幸运猜数”微信游戏的时候遇到的问题 对游戏感兴趣的,可以关注微信公众ID: EasyTool 回复[幸运猜数]开始游戏 之前提供的功能:[黄金][双色球][记事]等,都是无状态服务 而开发 ...

  3. 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下

    写在前面的 其实这个名字起得不太欠当,Unity本身是很强大的工具,可以部署到很多个平台,而不仅仅是可以开发Windows Phone上的游戏. 只不过本人是Windows Phone 应用开发出身, ...

  4. 如何在CentOS上安装一个2048小游戏

    如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由 ...

  5. UE4开发PSVR游戏流程

    先与sony的开发者关系部建立联系,展示工作室/公司制作PSVR游戏的构想和计划以及制作实力,如果对方觉得你提供的信息具有说服力,则会提供开发者资格,和你签署NDA,给你租借开发机和测试机(免费). ...

  6. HTML5外包注意事项-开发HTML5游戏的九大坑与解决方法剖析

    随着移动社区兴起,势必带动HTML5的革命.未来一两年内,HTML5移动游戏必将呈现大爆发趋势. 以下是整理的HTML5游戏研发.市场趋势以及渠道布局和技术解决方案的内容.希望大家能从本文中找到对HT ...

  7. C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...

  8. C#开发Unity游戏教程之Unity中方法的参数

    C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别 ...

  9. C#开发Unity游戏教程之游戏对象的行为逻辑方法

    C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...

随机推荐

  1. Docker镜像发布到阿里云

    登录阿里云Docker Registry $ sudo docker login --username=xxx@xxx.com registry.cn-hangzhou.aliyuncs.com 从R ...

  2. springboot:This application has no explicit mapping for /erro

    springboot启动没有报错,但是访问的时候返回如上图的错误.看报错内容感觉是没有这个mapping对应的接口.但是确实写了. 最终发现是因为springboot的启动类放的位置不对.启动类所在的 ...

  3. Win10安装Ubuntu子系统

    相信我,这是最后一次折腾系统了qaq,以后一定开始认真用Linux编程 跟的一个博客安装,传送门:Win10安装Ubuntu子系统及图形化界面详细教程 文章是2019的,加上我装的是Ubuntu 20 ...

  4. java进阶(23)--List接口

    一.基本概念 1.有序可重复 2.有下标 3.包含ArraList.LinkedList.Vector   二.List中特有的方法 且常用 (以下军均为数组通用方法) 1.void add(int ...

  5. safari 浏览器版本升级后提示“此网页出现问题,已重新载入网页” 解决办法

    safari回退条件 版本回退的前提是关闭电脑的SIP机制,命令行 csrutil status 检测状态.Mac os 10.14以下版本回退Safari后插件还是可以用的,升了新系统退了也没法用了 ...

  6. Feedforward neural networks前馈神经网络

    Feedforward neural networks or deep feedforward networks or multilayer perceptrons Pass input throug ...

  7. Linux 的shell指令

    ------十六进制查看文件 ------  ls 命令 ---- cp  ----- chmod

  8. 记录从Winserver2012R2升级到Winserver2019

    升级系统是必不可少的,最近想搞虚拟化Hyper-V:于是着手需要装一台WIN server 2019. 手头有一台Winserver 2012R2,正好拿来测试升级,此博做一个记录. 操作流程:在升级 ...

  9. 01 Arcgis10.6 安装教程

    一.ArcGIS系统要求 包括: Win7 SP1(及以上) 32/64位系统 Win8.1 32/64位系统 Win10 32/64位系统 二.下载ArcGIS 10.6安装文件 链接:https: ...

  10. const放在函数前后的区别

    转载:const放在函数前后的区别 一.const修饰指针 int b = 500; 1.const int * a = & b; 2.int const * a = & b; 3.i ...