随便写的做耐久小教程——(2)基本Object要素

本教程是基于umbrella丶2修改果引擎制作的耐久引擎(稍加改动)的教程,该引擎gm版本为Gamemaker8。
1.GML中较为特殊的一些语法
GML中无需输入分号作为一行结尾,笔者懒,所以之后的代码示例都不会有分号
A.repeat(){}
顾名思义,repeat的意义就是执行相当于括号中数值次数的代码(可省略大括号,即执行在repeat后的第一条代码),例如:
a=0
repeat(10){
a+=1
}
那么运行完之后,a的值就会变为10
B.with(){}
with代表让括号中的obj执行相应代码,例如:
with(ObjectSample){
a=1
}
那么运行完之后,ObjectSample中存储的变量a值就会变为1
注:在with的括号中还可以填入all(所有object)或者某个obj的id
2.GM8中变量的特点
变量分为全局变量,普通变量,临时变量,全局变量和临时变量使用频率不高,因此此处仅对普通变量进行介绍。
GML的特色之一是每个obj都能够存储一些变量,并且各个obj间的变量互不干扰,也就是说,一个obj的变量a=0,如果在另一个obj中执行a=1的代码,第一个弹幕的变量a依然等于0
此外,该引擎能够设置每个变量默认为0,因此在某些情况下无需特地在使用变量前进行赋值。
改变一个obj的变量具有以下两种方式:
A.直接更改
variable=xxx
B.间接更改
with(ObjectSample)a=1
或
ObjectSample.a=1
3.创建Object
GML中创建obj的函数为:

可以通过以下几种方式使用:
A.仅在对应坐标(x,y)创建obj
instance_create(x,y,obj)
B.在创建obj的同时,为inst赋值,其值等于创建的obj的id
inst=instance_create(x,y,obj)
C.在创建obj的同时,让obj执行一次代码
with(instance_create(x,y,obj)){
……
}
4.设置速度,方向
一个obj本身具有自带的速度属性speed和方向属性direction(角度制,右为0,逆时针增大),通过设定可以让obj朝着某个方向移动,例如在create事件中输入代码:
speed=10
direction=270
这个obj就会在创建后竖直向下以10像素每帧的速度移动

5.设置图像参数(透明度,拉伸倍数等)
一个obj的图像的参数有很多,其中最重要的有以下几种:
image_alpha:透明度,0为完全透明,1为完全不透明
image_angle:图像绕中心旋转角度,角度制,逆时针旋转
image_xscale:长方向拉伸的倍数
image_yscale:高方向拉伸的倍数
具体效果可以自行在创建事件中输入代码,运行游戏测试

6.销毁Object
GML中销毁obj的函数为:

执行后obj会销毁(如果有销毁事件,会在销毁的同时执行其中代码)

通常情况下,为了节省运算资源,弹幕obj离开房间或者存在一段时间后应当进行销毁,一般销毁有这两种形式:
A.离开房间后销毁
通过判断坐标位置,如在step事件中输入:
if bbox_right<0 or bbox_left>800 or bbox_bottom<0 or bbox_top>608{
instance_destroy()
}
那么这个obj就会在离开房间时销毁
注:通常情况下,iw房间大小为800×608
B.一定时间后销毁
通过在obj中设定一个时间变量,如在step事件中输入:
Time+=1
if Time=50 instance_destroy()
那么这个obj就会在50帧后销毁
注:一般iw的帧率是50,也就是50帧相当于1秒
7.时间轴
时间轴是耐久最重要的部分,这个引擎已经设置好了时间轴的基本参数,因此你只需要将所需代码填入对应的时间节点,不需要学习时间轴相关的函数。

在时间轴界面的左侧,有这样四个按钮:

其中,添加是在时间轴中添加某个时间节点,在此时间节点添加代码的方式与在obj事件添加代码的方式类似。
其他七个按钮含义显然,此处不做解释。
注:步为0的时间节点必须保留
在游戏运行的过程中,左上角有这样一列数字:

其中各个数的含义为:
curStep:时间轴对应的时刻。
IsPlaying:歌曲是否正在播放。
nums:该房间里存在的obj总数。(注:当nums超过1000时,应当注意检查是否有没有销毁的无用obj,正常情况下,nums大于1000之后有可能会出现明显的卡顿现象)
X,Y:kid的坐标
FPS:此刻的帧率/理论帧率
第二行数值:时间轴时刻转换为运行帧数
第三行数值:按下空格后,显示按下时刻的运行帧数/时间轴对应的时刻,用于定位时间
8.在耐久中创建弹幕的简单示例
1.按照第一章所述设计好引擎参数
2.创建一个obj,名字设置为Bullet,Parent设置为playerKiller
图像设置为sprCherry(在cherry文件夹里)

3.添加一个创建事件,并在创建事件中设定基本参数

4.添加一个步事件,并在步事件中设置销毁代码

5.在时间轴中添加一个时刻

6.在时刻事件中添加创建obj的代码

7.运行游戏测试

下一章将介绍如何制作基本类型的弹幕