Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0. 报数!统计感兴趣的事件 #1

Open
RGSS3 opened this issue Dec 21, 2018 · 0 comments
Open

0. 报数!统计感兴趣的事件 #1

RGSS3 opened this issue Dec 21, 2018 · 0 comments

Comments

@RGSS3
Copy link
Owner

RGSS3 commented Dec 21, 2018

前言

这一节是整个教程的一个基础方法,后面的多少会用到类似的方法。
体裁基本和API教程一样。也就是会给出一些直接模仿的实例,然后是练习。
这里假定你已经有一些事件基础。比如用独立开关做只能拿一次的宝箱或者是进入地图就初始化的事件。
如果你想初步了解下可能能实现什么效果,可以拉到每一节的最后看一下练习部分。

动机

有时候我们可能会想要统计一下地图上各个事件的一些情况,尤其是一些交互性很强的地图。
这里做一个小例子,统计地图上有多少个image事件,并存在一个变量里面以便以后使用。

image

你也可能会说,直接写死不就好了吗?但我们这里演示的是一个机制,要添加地图或者新的image事件,就只需要复制粘贴写好的事件就可以的机制,而不需要每次都去手动改那个变量的值,以后的例子也是这样。而且练习2提到一个只统计某片区域里面数量的问题,情况就多了。

步骤

因为并不知道有多少个,也不能直接去循环一下事件什么的。但是它们的处理流程是大同小异的。是同一类事件,我们以后就叫基本事件
就像军训教官并不会亲自数人头,而是让每一列自己报数一样。
我们用的办法是让事件自己来 报告
这个教程就是有关报告的。

1. 建立基本事件

image

a)选择一个开关,用于通知事件要进行报告。
b)新建自动执行的事件页,使用这个开关作为触发器。
c)写上报告的内容,这里我们就是让某个总数+1.
d)写上独立开关用来保证只报告一次。
如下:
image
image

2.复制基本事件

这样的基本事件我们会复制多个。可能是敌人,据点一类的。处理的流程完全一致。因此直接复制粘贴就好。
image

3.触发统计

这里先新建一个一般的初始化事件用于一开始就来记录有多少个image
这里使用并行处理,并且等待一帧来让所有事件都至少跑过一次完成报告。

image

image

4. 使用统计数据举例

image
image

小结

  • 基本事件: 特定的游戏类型或者关卡会有一些功能或流程完全一致的事件,可以当做一类事件来看待。写出其中一个,其他的简单的复制粘贴就可以产生。
  • 报告: 对一类基本事件进行一次遍历操作,通过设置一个统一的开关来进行。并不是我们主动去枚举每一个事件,而是每个事件自己过来报告。
  • 初始化事件: 一个固定套路,通过一个只运行一次的自动事件或者并行事件来执行一些一进入这个地图就发生的事情。

练习

    1. 在样例的基础上做一个无趣的小游戏(虽然可以有不报告的做法,但是也请使用报告完成一种做法):
    • 玩家可以通过在火炬旁边按下行动键来让他消失。
    • 消失时就会触发统计
    • 当统计结果为0时游戏结束,玩家成功。
    1. (难度:*) 在样例的基础上做一个小游戏
    • 有火炬和其他种类的基本事件如喷泉,有战斗事件。
    • 玩家附近范围不超过2的曼哈顿距离范围内
      • 存在一个火炬,则玩家进入战斗自动获得一个增益状态,如火属性增强

        每存在一个火炬,增加一些力量或物理攻击等(记得战斗结束时还原)
      • 每存在一个喷泉,则玩家进入战斗会每回合结束时回复部分生命值或魔法值
      • 存在一个其他事件,其他种类的增益或者减益
    • 战斗结束后,让提供了增益或者减益的事件(也就是范围内的事件)消失。
    • 击败地图上所有战斗事件代表的敌人,玩家胜利。
    • 其他的发挥,比如持有某物品可以使得某增益事件战斗后不消失。
    • 其他的发挥,比如基本事件本身就可以自己移动。
    • 提示1:先记下玩家当前位置到变量,运用报告让这些事件自己和记录的变量比较反馈是否应该提供增益状态和消失。
    • 提示2: 两个点(x1, y1) (x2, y2)曼哈顿距离的计算公式 |x1-x2|+|y1-y2|, 其中||是绝对值符号
    • 备注: 这个机制使得玩家面对即便相同的敌人,也可以通过移动来选择合适的位置获得不同的战斗增益或减益。也可以视为另一种区域机制。别忘了,基本事件自身还可以移动、消失或者变更种类。
    1. (难度: *) 推箱子小游戏
    • 和一般的推箱子规则差不多,可以在这里尝试一下
    • 提示1: 先统计箱子或者目标点总数
    • 提示2: 每次移动箱子前后,统计跟当前箱子重合的目标点数,他们的差值就是这次新增加的箱子与目标重合的数量
    • 显然的提示: 当目标点数=箱子与目标重合的数量,说明所有箱子已经到了正确的位置,玩家胜利,游戏结束
    • (难度: * *)也可以每次移动之后,直接让所有的箱子和所有的目标点的组合都去报告一次,如果有3对箱子和目标点,那么最后发生报告的次数应该是9次
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant