欢迎光临散文网 会员登陆 & 注册

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

2023-04-08 07:00 作者:_KomeijiKoishi  | 我要投稿

本教程是基于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像素每帧的速度移动

direction数值对应方向


5.设置图像参数(透明度,拉伸倍数等)

一个obj的图像的参数有很多,其中最重要的有以下几种:

image_alpha:透明度,0为完全透明,1为完全不透明

image_angle:图像绕中心旋转角度,角度制,逆时针旋转

image_xscale:长方向拉伸的倍数

image_yscale:高方向拉伸的倍数

具体效果可以自行在创建事件中输入代码,运行游戏测试

更多图像参数可在F1帮助文档此处查看


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.时间轴

时间轴是耐久最重要的部分,这个引擎已经设置好了时间轴的基本参数,因此你只需要将所需代码填入对应的时间节点,不需要学习时间轴相关的函数。

图中的tl_Ad便是耐久的时间轴

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

其中,添加是在时间轴中添加某个时间节点,在此时间节点添加代码的方式与在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.添加一个步事件,并在步事件中设置销毁代码

使该弹幕在50帧后销毁

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

歌曲开始后第10拍

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

创建一个Bulet

7.运行游戏测试

运行游戏的按钮,位于Gamemaker8界面左上角

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

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

分享到微博请遵守国家法律