前言
该游戏灵感来源于2D游戏《疯狂小人战斗》,是两个玩家利用地形与道具采取策略进行射击争取胜利的游戏。本游戏通过construct 3进行设计。
一、开始
进入construct 3 编辑器界面:editor.construct.net,点击“新建项目”(初次使用者可通过教程一步步进行学习)。初始化自己的项目名称、预设尺寸、可视区域、屏幕方向和初始事件等。然后便可以通过画布页、事件表、左侧的属性栏、右侧的项目栏开始游戏的编辑和设计。
二、游戏规则
游戏双方分别移动各自的小猪士兵,对对方进行射击。小猪士兵触碰到对方的子弹会受到伤害。某一方生命值归零或限定时间到时生命值较低一方则失败。场上有三种道具对小猪士兵的属性值有增幅效果。到最后关头生命较低的小猪士兵还会有意想不到的狂暴效果!

三、初始工作
首先创建一个Title background对象,选择自己心仪的背景。然后调整可视区域至覆盖整个游戏场景。然后在项目栏锁定该层,防止后续编辑受到影响。新增一层为主游戏层。后续的设计都在此层进行。再在此层增添三个文本对象,其中一个在顶部,以便后续使用。

四、属性设置
游戏的主体为两个小猪士兵、平台、可被子弹打破的墙壁方块。均采用添加“精灵”的方式向主游戏层分别添加这些对象,在这期间可以选取自己喜欢的素材作为外观。要注意的是,如果素材的透明边框过大会影响碰撞体积,可以选中精灵后点击“裁剪透明边框”。还要注意的是,由于两个小猪士兵由不同的玩家操纵,他们的外观也是水平镜像的,要注意分别创建精灵以免编辑粘连。


4.1 小猪士兵
对于小猪士兵而言,有两个关键要素:属性值和行为。点击一个小猪士兵,在左侧的属性栏中添加“平台”行为。“平台”行为能让精灵能够三向操控,并且只能在“实体”上行走,其本身还具有重力,最终使得精灵拥有在场景内自由移动的能力。
该游戏最主要的属性值是小猪的生命值,为了双方能更好地对峙,我选择将小猪的生命值设置为10。分别选中两只小猪,在左侧的属性栏中找到实例变量,添加名为“Health Point”的实例变量,将值设置为10。

4.2 平台与墙壁
平台与墙壁在外观上没有区别(当然也可以凭自己的喜好选择不同的素材)。添加精灵后,选中再ctrl+鼠标左键拖动即可复制你想要的足够数量的方块。为他们都添加“实体”行为。“实体”行为能使他们能够承载小猪,同时避免“穿模”现象。而墙壁能够被子弹打破,与小猪一样添加值为5的实例变量“Health Point”。
五、事件表设计
游戏的核心则在于其交互机制。在construct中由事件表来实现。每条事件都由条件和动作组成。以下添加事件格式统一为“条件”->“动作”。该游戏全程由键盘输入动作,所以我们首先需要在项目中添加“键盘”对象。
5.1 小猪
拥有“平台”行为的精灵默认的移动方式为方向键。但由于我们需要用不同的按键来操纵两只小猪,我们需要对其中一只添加“模拟控制”事件,分别映射按住’a’->左移、’w’->上移、’d’->右移。同时系统-场景开始->关闭默认控制方式。为了让小猪的移动方向与面向的方向一致,我们需要在该小猪按住’a’->左右翻转,’w’->关闭左右翻转。另外一只小猪则对方向键添加相应事件。

接下来则是设置小猪的射击。两只小猪分别使用’j’和回车键射击。小猪按下’j’->小猪生成对象“子弹”,小猪左右翻转时同理,并增添“子弹设置角度为180°”事件。由于按下对应按键即可发射子弹,过快的子弹发射速度亦会影响游戏体验,所以应设置一个射击缓冲。添加全局变量“射击缓冲”为0,“缓冲1”为0.5,“缓冲2”为0.5,并为射击事件添加“射击缓冲为0”的条件。小猪发送子弹后设置“射击缓冲”为1,系统等待 缓冲1/缓冲2 秒后再将“射击缓冲”设置为0,以防止小猪射击过快。

当一方小猪生命值降为0时,该玩家失败。我们添加小猪的“Health Point”小于等于0->小猪销毁对象,并设置顶部文本对象的文字为“Player X win!”(X为另一只小猪)。当一方小猪掉出场景时也会失败。添加小猪在场景外->设置顶部文本对象的文字为“Player X win!”(X为另一只小猪)。

我们还可以利用剩下的两个文本框来实时显示两只小猪的生命值。设置系统每一帧->设置文本对象的文字为“Player X:”&PlayerX.Health Point。以便玩家根据自己的生命值来制定自己的策略。

5.2 子弹
与子弹进行交互等的有墙壁和小猪。为了避免小猪发射出的子弹碰撞到本身,我们加入两个“子弹”对象分别对应两只小猪,均为它们添加“子弹”行为。添加一个子弹碰撞到另一只小猪->子弹销毁对象,并且另一只小猪的“Health Point”减少1的事件。然后再添加一个子弹碰撞到墙壁->子弹销毁对象,并且墙壁的“Health Point”减少1的事件。当子弹碰撞到地面时同理,只需要销毁子弹。
现在,当子弹打到小猪时,小猪是没有受击反馈的。我们可以对小猪添加连续的几次 设置不透明度为0-系统等待0.05秒-设置不透明度为100-系统等待0.05秒的动作,即可产生闪烁的效果。

5.3 道具
场上有三种道具:蘑菇、药筒和苹果,他们各自有各自的增益效果,并均会隔一段时间在场上生成。同样向上面一样在场中添加这三种精灵。
当小猪拾取蘑菇时,能够增快子弹的射击间隔,增强作战能力。我们在系统每30秒->生成一个“蘑菇”对象,同时小猪碰撞到蘑菇->销毁蘑菇,并将该小猪的 缓冲1/缓冲2 的值-0.1。

当小猪拾取针筒时,能够增加小猪的最大速度和加速度,提高机动性。我们在系统每20秒->生成一个“药筒”对象,同时小猪碰撞到药筒->销毁药筒,并将该小猪的加速度设置为自己.平台.加速度+500,最大速度设置为自己.平台.最大速度+50,系统等待8秒后恢复原值。

当小猪拾取苹果时,能够回复小猪的生命值。我们在系统每10秒->生成一个“苹果”对象,同时小猪碰撞到苹果->销毁苹果,并将该小猪的 “Health Point”增加2。

在小猪拾取到以上道具时,都可以增添相同的闪烁事件。

5.4 系统事件
疯狂小猪战斗的游戏限定时间为60秒。在游戏上方显示剩余时间有利于双方玩家作出决策。系统每一帧、时间运行小于等于60秒、两只小猪的生命值均大于0->游戏顶部文本框设置文字为“剩余时间:”&60-游戏运行时间。

我们需要一个全局变量“Finish”来判断游戏的结束与否。新增一个全局变量“Finish”为0。当一方获胜或时间到时->打开Finish。当Finish为真时,游戏结束,我们需要重载游戏来快速重新游戏。系统如果Finish,点击鼠标左键(先加入鼠标对象)->加载游戏(插槽:“mysave”)。相应的,我们也要在游戏开始时->保存游戏(插槽:“mysave”)。


为了增添趣味性和更多的策略选择,当游戏进入最后15秒时,生命值较少的小猪将会进入狂暴状态。设计间隔、最大移速和加速度均有大幅度提升。时间大于等于45秒时->设置缓冲X为缓冲X/2,将该小猪的加速度设置为自己.平台.加速度+250,最大速度设置为自己.平台.最大速度+75,该小猪的生命值减少3。

当时间到时,根据两只小猪的生命值比较得出游戏的胜负。系统运行时间大于等于60秒时,比较两只小猪的生命值->在游戏顶部文本框设置文字“Player X win!”(X为生命值较高的小猪)。


5224

被折叠的 条评论
为什么被折叠?



