前言

为了更快体验做出游戏的快乐,我们可以直接采用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. 微信小程序 | 模仿百思不得其姐

    微信小程序 仿百思不得姐 设备 微信开发者工具 v1.02.1901230 扩展 修复了视频点击播放不流畅的问题 修复了视频的暂停够无法播放问题 优化了部分页面 接口 首页 http://api.bu ...

  2. 217。数据中是否有重复元素(哈希表/set简法)

    给定一个整数数组,判断是否存在重复元素. 如果任意一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 1: 输入: [1,2,3,1] 输出: t ...

  3. Linux里隐藏的计算器,你知道它的奥秘吗?

    Linux里隐藏的计算器,你知道它的奥秘吗? 大家都知道,windows下有个计算器工具,我们在工作生活中经常使用到它.但是,你可知Linux下也同样有个计算器吗? 当然,良许说的是命令行下的计算器工 ...

  4. TS数据类型:类型别名/联合类型/字面量类型/类型推论等纲要

    在学C/C++  Java等强类型语言时,变量类型是唯一的,需要先指定.PHP JavaScript等弱类型语言时,无需指定变量类型 但是,TypeScript里面的联合类型 (Union Type) ...

  5. SpringBoot普通消息队列线程池配置

    1 package com.liuhuan.study.config; 2 3 import com.google.common.util.concurrent.ThreadFactoryBuilde ...

  6. 加权图的最小生成树、最短路径算法 - java实现

    加权图相关算法 前言 本文主要介绍加权图算法中两个重要应用:最小生成树和最短路径. 求最小生成树时针对的是加权无向图,加权有向图的最小生成树算法成为"最小属树形图"问题,较为复杂, ...

  7. zabbix_server.conf配置文件参数

    NodeID: 在amster-child 的分布式架构中,这个ID是唯一标识zabbix node的号码 ListenPort:Trapper 类型Item监听的端口, SourceIP: 在连接其 ...

  8. Linux系统编程 —读写锁rwlock

    读写锁是另一种实现线程间同步的方式.与互斥量类似,但读写锁将操作分为读.写两种方式,可以多个线程同时占用读模式的读写锁,这样使得读写锁具有更高的并行性. 读写锁的特性为:写独占,读共享:写锁优先级高. ...

  9. Kafka索引设计的亮点

    前言 其实这篇文章只是从Kafka索引入手,来讲述算法在工程上基于场景的灵活运用.单单是因为看源码的时候有感而写之. 索引的重要性 索引对于我们来说并不陌生,每一本书籍的目录就是索引在现实生活中的应用 ...

  10. springboot的启动流程源码分析

    .测试项目,随便一个简单的springboot项目即可: 直接debug调试: 可见,分2步,第一步是创建SpringApplication对象,第二步是调用run方法: 1.SpringApplic ...