GameMaker标准中文教程

更新时间:2023-11-19 12:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

入门篇

GameMaker是一个很容易就可以开发你自己的电脑游戏的软件。这一章介绍你想制作的游戏所需要的知识。后面的章节会进一步讨论更多的功能,怎么发布你的游戏和介绍GameMaker的内建语言GML。

关于GameMaker的初级使用在下面的页面有介绍。

GameMaker制作原理

在研究GameMaker之前,最好先摸索一下GameMaker的制作原理吧。用GameMaker做游戏都放在一个或多个房间里。(房间是一个平台,不是3D的,但可以包含仿3D的图片。)在这些房间里,你可以放置物体(可以在GameMaker里定义)。经典的物体有墙、运动的小球、主角、怪物等。有些物体(像墙)是静止的什么都不做。另一些物体(例如主角)会响应玩家的输入(键盘、鼠标、手柄)而运动。或者物体跟物体间也会产生某些反应。例如,当主角遇到怪物的时候,主角会死亡。在GameMaker中,物体是最重要的。

首先,大多数物体都需要一些图象来让它们显示于屏幕上。这种图象叫做精灵图象。一个精灵图象不单可以是一张图片,可以是一套动作的图片集,用于表达物体的动作效果。这样,就可以达到像走动,转动等效果。在游戏中,精灵图象在某些特殊的物体里是可以改变的。(这样当物体向左或向右走时可以显示不同的图象。)你可以在GameMaker里制作自己的精灵图象,或者导入一些图片素材。 物体会发生某些事。这些事叫做事件。当事件发生时,物体会执行相对应的动作。物体可以发生很多事件并可以响应很多不同的动作。例如,当物体创建时会发生一个创建事件。(说精确一点是,物体中的某个具体对象被创建;物体相当于一个类,而对象就是类的一个抽象。)例如,当一个球被创建时你可以给它一些运动动作,这样球就可以运动了。当两个球相遇时,会发生碰撞事件。在碰撞事件发生时,你可以给球一个动作,让它停止或者反向运动。或者也可以产生音效。GameMaker可以让你定义一些声音。当玩家敲击键盘时,会产生一个键盘事件,物体会执行相应的动作,例如移动。我们希望你可以理解一点,设计每种物体,你要先定义事件,再在事件里加入对应的动作。

当你定义好物体之后,你应该开始设计房间了。这样,物体才可以在房间里表演。在游戏里房间可以用来设计关卡或者大地图的不同部分。用动作可以从一个房间移动到另一个房间。房间,首先,要有一个背景。背景可以是纯色的或者是一张图片。这种图片你可以在GameMaker里创建或者从外部调用。(背景可以做很多东西,但暂时只是用于美化房间。)下面,你可以将物体放到房间里了。你可以放入多个同样的物体。因此,例如,你可以只定义一种墙物体就可以在房间里放入很多这种墙。你也可以放入多个同样的怪物物体,这时它们的行为是一样的。现在你可以准备运行你的游戏了。运行时,会先出现第一个房间。物体也会按照设定的动作运动。它们会根据发生的事件来执行相应的动作。

下面这些是比较重要的资源:

物体:游戏中定义有各种事件动作的实体,它们是游戏的主要表现部分。 房间:放置物体让它们活动的地方,可以理解为不同的场景。 精灵:用来展示物体的图片,它只是图片,无任何属性行为。 声音:用在一个游戏中的背景音乐或者音效。 背景:为房间定义背景的图片。

事实上还有其它很多的各种类型的资源比如说:路径、脚本、字体、时间轴等。它们在更复杂的游戏中起到了很大的作用。这些只有你在高级模式下运行

GameMaker才可以看得到。如果你觉得有很多细节没有看懂,没有关系,在后面的章节中,我们将分门别类的对每一个资源设置项目进行详细的讲解。这里我们只希望可以让你对GM的运行体系有个大致的了解。

一个例子

首先最好让我们来看看一个简单例子。我们假设你在简单模式下运行

GameMaker。第一个步我们先在脑海里大概的勾画一下我们要制作的游戏是什么样子的(你最好先做这一步工作,当你打算开发大型游戏时,你就不是简单的在脑海里勾画了,你必须有你的游戏开发进程表,以及各种有条理的书面规划,这样可以为你在以后的开发中节省很多时间)。我们现在的个例子是很简单的:有一个球在几面墙之间弹跳,玩家可以点击球,每一次点到会得一分。

那么首先我们需要两种不同的游戏物体:球和墙。这样我们需要两种精灵图片来表示两种物体。最后,当我们成功点中球时我们会听到一些声音。这个简单的游戏我们只要为它设置一个房间就可以了。不妨让我们自己动手来做做吧,在做的过程种如果你碰到什么地方不会的话可以调出例子来看看。(ball.gm6) 好了开始动手吧。首先我们制作好精灵图片,从“添加”菜单菜单里我们选择“添加精灵”,你可以看到一个弹出的窗体,在“名称”选项里我们输入“wall”,选择“读取精灵”按钮并选择一个类似墙的一个小图片,这样我们就得到了一个墙的精灵图片。现在你可以关闭该窗体了。以同样的方法为球(ball)也建立一个精灵图片。

下面我们添加声音,从添加菜单里面选择“添加声音”,另一个窗体将会打开,给声音取一个容易识别的名字并选择“读取声音”,载入一个声音资源并试试是否是你想要的效果,如果设置好了就可以将窗体关闭。

下一步是创建两个带事件的物体,首先让我们来看看墙物体。再次从添加菜单中选择“添加对象”,将会弹出一个比之前复杂一点的窗体。左边我们看到是物体一些大概的相关信息。我们给物体取一个贴切的名字并且从“精灵”下拉菜单中选择一个正确的精灵图片。因为墙是一个固体所以我们在“固态”选项框打上沟。现在我们来建立一个新物体,给它取名为“ball”,并且给它一个球的精灵图片。因为球是运动的所以我们就不要钩选“固态”选项了,一会我们还要给它

设置行为动作。在中间你可以看到一个还没有添加任何事件的空列表栏,在栏下面是一个名为“添加事件”的按钮,单击它会列出所有的事件。选择“建立”事件,你会看到它被添加到了事件列表中。在最右边你可以看到所有可以用的动作命令,它们都已经被分好组了。从“移动”组里面我们选择一个8个红箭头图标的动作拖动到动作栏中,这个动作将让物体朝一个特定的方向运动。当你完成拖动后一个对话框将会显示出来,在里面你可以指定物体运动的方向。选择所有的箭头以便选择一个随机的运动方向。你可以指定速度为8。好了,现在关闭对话框。现在球从开始建立就可以运动的事件已经设置好了。下一步我们将要设置球碰到墙会有什么反应。再次按“添加事件”按钮,在球的事件列表里选择“碰撞”事件,并且在下拉菜单里面选择墙物体(和墙相撞)。在这个事件里面我们将要添加一个“反弹物体”的动作。(在动作按钮上,你只要把鼠标放在上面几秒钟就会弹出动作介绍的帮助气球)最后我们需要定义当用户球物体被鼠标左键单击发生的行为。添加“鼠标”事件并且从下拉菜单中选择“左键”事件。为这个事件我们添加一些新动作:一个用来播放声音,另外一个用来更改分数值,两个动作分别可以在“主要一”组和“分数”组中找到。还有另外两个动作是用来给球一个新的随机位置并且朝一个新的方向运动。用同样的方法添加好。在声音动作里面我们选择好正确的声音。在分数动作里面,我们输入1并且在“相对”选项前点钩,意思是在当前的分数值上加一。最后,加上一个“跳到随机位置”动作和一个8方移动的动作。

现在我们的物体就准备好了,我们还要做的是设置房间,或者说场景。为游戏添加一个房间,再次选添加菜单选择“添加房间”,在右边你可以看到空空的房间还没有放置任何物体和背景。左边你可以看到一些标签菜单选项。一个用来设置背景,一个设置房间的大致属性,象长宽之类的,还有一个菜单你可以用来往房间里面添加定义好的物体,在底部你可以从下拉菜单里选择物体。通过点击房间的指定位置你可以将物体放置在房间的指定位置。你可以右击物体来将它删除。用墙物体建立一个美观的方形墙壁,最后把一两个球物体放置在房间的墙壁围好的空间里面。我们的游戏到此已经全部准备完毕。

现在是我们将要测试的时候了,单击“运行”按钮,看看会有什么发生。如果在球刚开始运动的设置上没有发生错误,那么你试着点击它看动作是否有误。你可以通过键盘“ESC”键停止游戏。同时你也可以为这个小小的例子做更多的变化,比如你学了粒子效果,你可以为球添加运动的轨迹效果,并且当两球碰撞时产生火星等。

恭喜你,你已经用GM制作好了你的第一个游戏。好了接下来,就让我们更深入的到每一个环节去学习吧。

精灵图象

精灵图像在游戏中是用于表现物体的资源(可以将物体看成灵魂,那精灵图象就是肉体)。一精灵图像可以是一个单独的图像,也可以是一组一个接一个播放的图片集。

当你做一个游戏的时候,通常你会收集游戏里所需要的精灵图形素材。你可以在GameMaker的网站上找到一些简单的素材,在网上也有很多。一般格式都是gif的。专业游戏制作组制作游戏时会让美工设计好一套各种角色图形。一般的爱好者可以自己动手,也可以到网络上通过其它途径寻找现有图形资源来制作游戏。 你可以通过添加菜单或者工具栏的按钮来添加精灵图象。添加时,会打开一个精灵图象的属性窗体。

在上方你可以指定精灵图像的名称.全部精灵图像(和其它全部的资源)都要有一名称。你最好给予每个精灵图像一个描述性的名称。并确定所有资源有不同名称。虽然不需要严格地遵守命名规则,但建议你在精灵图像名称上只使用文字、数字和底线符号(_) 命名(任一其它的资源也一样)并以一英文字开始。特别是不要使用空格符,一旦你开始使用脚本后将会发现按规则命名非常重要。 要加载一精灵图像,点选“读取精灵”按钮。将会弹出一个标准的文件打开对话框,你可以指定精灵图像。GameMaker可以加载许多不同格式的图象文件。当你加载一动画gif,不同的帧组成精灵图像(注意被压缩的动画gifs文件不可以被加载)。只要精灵图像被加载,那么第一个子图形会被显示在窗体右边。当精灵图形是动画时,你可以使用工具栏的箭号按钮来更改它们的顺序。

“透明”选项指定精灵图像的背景是否要被当成透明来处理。大多精灵图像背景都是透明的。背景色是由图像最左下方的像素颜色来决定。所以要确定图像要显示的部分中没有是透明色的颜色,否则将被透明化而不被显示。

可以用“编辑精灵”按钮来处理精灵图像,或甚至创建一完全新的精灵图像。后面章节有详细介绍。

声音与音效

大部分游戏有特定的声音效果和一些背景音乐,在GameMaker网站中也简单的提供了一些声音文件,你可以在网络上搜集更多音效资源。

添加声音资源到你的游戏中,可以在添加菜单中使用“添加声音”命令或在工具栏中使用对应的按键。这时候会弹出一下像下面的属性窗体:

在上方你可以更改声音资源的名称。需要加载一声音,单击“读取声音”的按钮,显示一个文件打开对话框,在上面你可以选择声音文件。有两种类型的声音文件,wave文件和midi文件 (关于mp3文件后面有介绍,因为比较特殊):wave文件通常用于短音效。它们使用许多的内存,但是播发很快就结束。可在你的游戏中当作音效使用。midi文件使用较少内存,但是它们被限制在只作为背景音乐,不支持各种音效。而且任何时间只可以有一个midi声音在播放。

你可以使用播放按键听声音效果。有一个“保存声音”的按钮用于保存当前的声音。这按钮不是必须的,但某些时候还是有用的。

背景

第三种基本资源是背景。背景通常是较大的图像,常用于游戏发生的房间中做背景(或前景)。通常背景图像可以用看不出缝隙的元件类图形用来重复排列形成。GameMaker的网站也提供了一些简单背景图象。

要添加一背景资源到你的游戏,在增加菜单中使用“添加背景”命令或在工具栏中使用相对应的按钮。这时将会弹出背景的属性窗体:

同样你要给背景取一个名称。单击“读取背景”按钮以加载一背景图像。

GameMaker支持许多格式的图象文件。要注意背景图像不可以是动画!(透明)复选框指出背景是否为部份透明,大部份背景不透明的所以默认值为否。最左下方像素的颜色被拿来当做透明颜色。

你可以使用“编辑背景”按钮来更改背景或创建一个新背景。

物体

到目前为止你应该可以添加一些漂亮的图片和好听的声音到游戏中了,但它们不能产生任何行为。现在我们来了解GameMaker中最重要的资源:物件。物体是在游戏中实际动作的实体,大多数情况下它们会用精灵图像来展示自己,这样你就你可看见它们。同样它们有行为,它们可以对一定事件作出反应,这就是物体区分于精灵图像的区别,因为它们有事件、有行为。在游戏中你见到的放在场景中的东西都是物体(除了背景之外。更精确地说,它们是物体的实例)。人物、怪物、球、墙壁、等等,全部是物体。也有一些特定物体是你不看到的,因为它没有设置一个用来显示它们的精灵图像,但是它们仍被放在场景中,它们事件在控制游戏某部分的运作。

需要了解精灵图像和物体之间的差别。精灵图像只是(动画)图像,而没有任何行为。通常物体有一个精灵图像代表它们的外观,但是物体有行为,没有物体游戏就不发生任何事件产生任何效果,也就没有游戏!

还要了解在物体和实例之间的差别,一个物体描述一特定的实体集合。例如:一个怪物。在游戏中一种物体是可以有多重实例的。当我们谈及到一个实例时代表一个物体中一个特定的有一个ID编号的实例,当我们谈到一个物体时代表该物体中全部的实例。也就是说一个物体可以有很多个实例用来代表这个物体来使用,物体是所有实例的总称。物体是一个集合,实例是物体的一个抽象(如果学过面向对象编程会很容易理解,就是类跟对象的关系)。

要添加一个物体到你的游戏中,从添加菜单中选择“添加对象”。会出现下面的窗体:

这相对来说会复杂一点。左边有关于物体的一般信息。在中间是物体发生的事件表列,在右边是物体对应事件的多种不同的动作。事件和动作将会在后面的章节介绍。

同样你需要给物体一个名称。然后你要指出用来显示物体外观的精灵图像。在精灵图像方块中单击鼠标左键,或在靠近它的菜单按按钮单击鼠标左键,将立刻弹出一个菜单,其中包含了所有可用的已经添加的精灵图像。选择一个你想要用来代表物体的精灵图像。如果之前没有添加精灵图象,可以点击“新建”按钮来添加一个精灵图象。这样会比先定义精灵图象在调用快些。

在下面有两个复选框,一是“可见”,可见表示在舞台上物体是可看见的。一般大部份游戏在舞台上物体是可见的,但有时无形的物体是相当有用的,例如,你可以使用它们来描述怪物运动情况。隐形的物体同样作出事件反应,且其它的实例也会发生碰撞事件。标示“故态”的复选框指定物体是否是一个静止物体(像墙壁)。和实体物体碰撞与和非实体物体碰撞效果是不相同的。一般固态的都用于描述不运动的物体。这些后面有更多介绍。

事件

GameMaker使用事件驱动物体产生动作。那就是说,当游戏发生某些事情的时候,物体的实例会得到事件(一种告诉物体发生什么事的信息)。 物体实例可以通过执行动作来响应这些信息。每种物体,你都可以设置事件,并说明该事件发生时,物体实例该做些什么。物体的实例添加事件和此事件对应动作后,会在发生此事件时产生相应的动作。这看起来似乎复杂了点,但事实上很简单。比如事件鼠标左键单击这个事件发生,而在这个事件中添加了播放一个声音的动作,那么当在物体的一个实例上点了鼠标左键后,会播放一个声音文件。你可以使用一个非常简单的拖放方法来指定动作。

在物体属性表单的中央,有事件列表,列出物体必须作出反应的事件。最初是空的。你可以增加事件到其中,由单击“添加事件”按钮。将出现一个事件列表的小窗体。在里面,你可选择你想要增加的各种事件。例如,如果是键盘事件,你必须选一个按键。

在窗体右边列出了全部的动作,由小图标表示,它们已经分好类。在下一个章节我将描述所有的动作和它们的功能。

在事件和动作之间有动作列表,列表包含当前事件的动作。要增加动作到列表,用你的鼠标拖曳它们,从右边拖到列表中就行了,它们将照拖曳顺序排列,并有一简短的描述。对于大多动作,你需要设置一些参数。这些也将会在后面章节有介绍。

现在你可以开始增加动作到不同的事件里,用鼠标左键点选要设定的事件来选择,然后在其右方动作列表中拖拉动作到事件对应的动作菜单里(注意删除一个

事件时所有的事件里的动作会被全部删除。还有如果事件里动作列表为空,那么这个事件也会自动被清除)。

你可以使用拖曳更改列表中动作的顺序。当拖曳时假如你按住键,将会复制这个动作。甚至可以在不同物体中的动作列表之间使用拖曳(将一个动作拖曳到不同物体)。当你在动作列表中的一个动作上点选鼠标右键时,会弹出一个菜单,其中你可以删除动作(也可由使用按键来完成)或复制和粘贴动作。按+键可以选中所有动作。当你将你的鼠标指针放在一动作上方不动,会显示鼠标停留的动作的简介。更多有关动作的信息后面还有介绍。

用Delete键可以删除事件以及它所有的动作 。假如你想要指定动作到一不同的事件请单击标示更改的按键,并选择你想要的新事件(新的事件不能是已经被使用过了的)。某些事件名称的旁边有一菜单符号紧邻着它表示在里面为事件的集合,有很多可选事件。当你在菜单上单击鼠标按键,或在事件名称上点鼠标右键,出现菜单让你可以挑选想要更改的事件。 下面为几个常用事件介绍:

建立事件:当物体的一个实例被创建(或者说是放到场景上时)触发事件,是物体实例的第一个执行的事件,一般用来为实例设定特定变量以及定义物体开始时的运动或者要发生的动作。

破坏事件:当实例在场景中被删除时触发的事件。更精确地说,它发生在实例被摧毁之前的瞬间,所以当事件在执行时,实例还存在!例如你可以让一个魔鬼死亡/消失时发出大叫声(播放一个声音文件),或者使用它来更改游戏分数,或者创建别的物体。

计时器事件:每个实例有12个定时时钟,可以精确控制物体在某刻发生某个动作,你可以给时钟设置一定的动作,再给时钟设置一个倒计时步数,然后时钟倒数计时直到步数到0,在那个瞬间时钟事件触发,时钟里的动作执行。要指定动作到一给定的时钟,首先你需要在菜单中选择它。时钟非常有用,你可以使用它们去让特定的行为不断发生。例如一个怪物在每20步更改它运动的方向一次(要实现这中效果你可以在时钟事件里的动作里再设定时钟这样就会反复被激发)。

步事件:步事件发生在游戏的每一个步里,因此你可用于放那些需要被连续执行/一直发生的动作。例如,假如一个物体要会跟随别的物体时,你可以在步事件里把这个物体坐标设为要给跟随物体的坐标加减一点请小心使用这个事件,在有步事件的物体中,不要用过多复杂的动作,否则会大大减慢游戏速度。其中有三种不同的步事件。通常你只需用默认的步。你也可以通过弹出菜单选择开始步和停止步事件。开始步事件是在每个步的最起初执行,注意它在发生任何事件之前。正常的步事件是物体实例被放到它们的新位置之前执行。停止步事件是在步的结束时执行,在物体绘制之前。常使用在如按照当前方向来更改精灵图像。

碰撞事件:不论何时当两物体实例碰撞(也就是,它们的精灵图像重迭)时,发生碰撞事件。精确地说是两个碰撞事件发生:因为每个实例各设置了一个碰撞事件。实例可以对碰撞作出反应。要设置碰撞,先点碰撞事件菜单,再选择你想要定义碰撞事件的物体,其次你把动作放在动作列表里。

实例与一固态物体和一非固态物体碰撞时是有差别的。首先,当在碰撞事件中没有添加动作时,什么也不会发生:当前的实例保持原来的运动,即使被碰撞的物体是故态也如此。当碰撞事件包含了动作时,则出现下面的情形:当被碰撞物体是固态物体,实例先被放回它先前的位置(即在碰撞发生之前的位置),接着执行碰撞事件。最后,实例被放到它的新位置。当被碰撞物体不是固态物体时,原先实例不会被放回,实例仅在它当前的位置上执行事件,并且,碰撞不会检查两次。稍微想一下就明白这是理所当然的。因为物体不是固态物体,我们可在它上面移动。碰撞事件有许多用处,物体实例可以使用它来实现墙壁的反弹。你可以使用它来销毁物体假如它们被子弹击中等等。

键盘事件:当游戏者按下键盘上的键时,按键事件就发生了。每个按键,可以设置不同的事件。在菜单中你挑选需要被定义按键事件的按键,然后再添加动作。通常,游戏里只有少数的物体会用到少量的按键。当压住按键不放时,该键所定义的动作会一直循环执行。有两个特别的按键事件,一个称为“没有按键”,当没有按下键时,事件会发生在每步中;第二个称为“任意键” ,当任意键被按下时发生。注意在键盘右方数字小键盘中,要按按键激活数字键盘,数字按键事件才会有作用。

鼠标事件:当鼠标光标停在代表精灵图像的实例上时,产生了此物体实例的鼠标事件。按照鼠标的按键情形而定,有<没有按键>,<左键>,<右键>,或<中键>事件等等。当游戏者一直按着鼠标按键不放时,鼠标按键事件会在每一步中发生。按下事件是当按键被压下时发生,注意只发生一次。释放事件是当压下的按键被放开时发生。注意事件只在鼠标光标移到实例上时才发生。如果你想在任意位置都可以响应鼠标事件,你可以用全局鼠标事件。还有两个特别有用的事件,一个为鼠标移到物体实例上时发生的事件,一个为鼠标移出物体实例时发生的事件。鼠标滚轮的滚动也可产生事件。最后还有些关于游戏手柄的事件。 其他:

还有一些其它的事件在游戏中也是很有用的。可以在菜单中找到: ·离开房间: 当实例的位置完全在场景的外面时触发事件。 ·与房间边界碰撞后触发:当实例与场景的边界相交时触发事件。

·游戏开始:当游戏开始时触发了事件,适用于第一个场景中全部的实例。它在房间开始事件之前发生(后面有介绍)甚至在场景中物体实例的创建事件之前发生。它经常用来定义某些背景音乐和初始化某些变量,或加载某些文件资料/游戏动画等。要注意只能由一个物体定义此事件。

·游戏结束:当游戏结束时事件发生到全部实例。例如用来在游戏结束时储存特定数据。同样的,只能由一物体定义此事件。

·房间开始:当房间开始时发生,用于初始化房间中的实例,它发生在创建事件之前。

·房间结束: 房间结束时发生。

·生命数为0:GameMaker嵌入了一个生命系统。可用来设置玩家的生命数,有一个动作可设定和更改生命值,当生命值小于或等于0,就发生该事件。它通常用于结束或重新开始游戏。

·健康值为0:GameMaker也嵌入了一个健康系统。有动作用于设定和更改健康值。当健康值小于或等于0时,该事件发生。这通常用于从新获得生命或重新开始游戏。

·动画结束:一个动画由许多图像轮流显示而组成,在最后一个显示的图像之后,会又从第一个图像开始,事件正是在那瞬间发生。例如,可以用于更改动画,或删除实例。

·路径结束:事件发生在当实例沿路径运动并到达路径的终点时,后面对路径有更多的介绍。

·用户自定义:有八个事件。它们通常不会发生,你可以用代码来调用它们。 绘图事件:可见的实例会在每个步骤将把精灵图像绘制在屏幕上。特别注意当你在绘制事件中设定动作后,物体不会被绘制出,取而代之的是执行对应的动作。所以一般用一个不用在舞台上显示出来的物体添加绘制事件。还要注意绘制事件只有在当物体是可见时才可以执行。

按下键:类似于按键事件,但是它只发生一次,只在当按键被压下时,且不是连续的。当你想要让一个动作只发生一次时会用到。 放开键:发生一次,在当按键被放开时,且不是连续的。

清楚GameMaker处理事件的顺序是非常重要的,各种行为发生顺序如下: ·开始步事件->时钟事件->按键事件,按键压下和按键释放事件->鼠标事件->正常的步事件->(现在全部实例在它们的新位置上)->碰撞事件->结束步骤事件->绘制事件。

当相对应的情形发生时,如创建,摧毁,和其它的事件会被执行。

动作

动作指的是要执行的行为,放置于事件之中。不论何时当事件发生时就会执行设定的动作。GameMaker中有大量可用的动作.清楚它们的功能是很重要的,本章节中我将说明一下简易模式下的全部动作。GameMaker默认动作已经分好六组,当你把鼠标光标固定放在一个动作图标上方,会显示一个提示气球提示它的功能。

只要拖曳动作图标到动作表列就可以把一个动作放在一个事件中。你也可以通过拖曳更改动作在表列中的次序。拖曳时按住键可以复制动作(在不同物体属性窗体之间你也可以拖曳和复制动作)。

当你添加一个动作,通常会弹出一个属性窗体,你可以为动作填入一定的参数。许多动作都会有二种参数:在窗口上方你可以指定动作要用于哪个实例,默认值是自己本身,意思是动作将会发生于指定的物体实例。在一碰撞事件中,你也可以把动作作用到涉及在碰撞中的被碰撞物体,这样你可以摧毁被碰撞的物体。最后,你可以选择把动作用到指定的物体里全部的实例中,比如这样你就能更改全部的红色球成为蓝色球。第二个参数是标示着“相对”的复选框,意思为当你输入一个数值时,是相对于当前的数值产生变化的。例如,你可以在当前的分数加减值,而不是把分数直接更改成新的数值。你还可以双击已添加的动作图标来更改动作参数。

下面是各种动作分类的页面:

移动动作

第一组的动作是由与物体运动有关的动作集合成。有下列动作:

开始朝某个方向移动

使用此动作使一实例在特定的方向开始运动。使用箭号按键来指出方向,使用中央按键来停止运动。可以设定物体运动的速度。速度是用每步几个像素来给定,默认值是8,速度最好不要使用负值,你可以规定多种方向,例如样你可以让一怪物开始往左或右方移动。如果选中多个方向,物体会随机选中其中一个方向运动。

设定运动的方向和速度

第二种方法是使用蓝色箭头来定义一个运动,这样你可以指出一个精确的方向,是一个介于0和360度数之间的角度值,0代表水平向右。方向是逆时针旋转的,如90度为一朝上的方向。假如你想要一任意的方向,你可键入任意方向random (360)(意思为在0-360之间任取一随机数值)。注意“相对”前的复选框,假如你勾选方框,新的运动设定会增加到旧的运动设定上。好比说,假如实例是朝上运动而你增加一点向左的运动,最后新运动将是朝左上方运动。

朝指定点移动

这是第三种让物体移动的动作,你指定一个位置和运动速度,实例按指定的速度向位置移动(注意物体不会停在指定的位置!只是朝位置方向移动)。例如,你想要子弹朝宇宙飞船的位置运动,你可以设定子弹朝向的位置为:spaceship.x,spaceship.y(后面章节有更多关于变量的使用方法)。假如你勾选“相对”复选框,即是在指定相对于当前实例位置的新位置(速度不可以勾选“相对”!)。

设定水平速度

一个实例的速度由一水平和一垂直速度组成。你可以用这个动作来更改水平的速度,速度是正值代表往右运动,是负值代表往左运动,垂直的速度将保持不变。使用“相对”来增加水平的速度(或用一负数减少它)。

设定垂直的速度

同样的,仅更改实例的垂直速度。

设定重力

用此动作你可以创建物体的重力效果。你指定一方向(角度在0到360度之间)和一个重力加速度值,指定方向的重力速度值会添加在物体实例当前的运动中,通常你设定小的加速度(如0.01),设定方向为竖直向下(270度)。假如你勾选“相对”复选框你将增加重力的速度和方向。注意,与实际生活中不同,你可以设定不为朝下的重力方向。

水平反向

这动作可以使物体实例运动的水平速度反向。例如当物体碰到竖直的墙的时候用此动作。

竖直反向

这动作可以使物体实例运动的竖直速度反向。例如用于碰撞水平的墙。

设定摩擦力

摩擦使实例在运动之时速度缓慢减下来。在每个步骤中数值会与速度相减,直到速度变为0,通常摩擦力值设的比较小(如0.01)。

跳到一指定位置

使用此动作你只要指定x和y坐标将实例放在一特殊的位置。假如你勾选“相对”复选框,位置是相对于实例的当前位置来放置。

跳到开始位置

此动作把实例放回刚开始它被创建的位置。

跳到一随机位置

该动作把实例放置到场景中的一个随机位置,这些位置没有其它故态物体。你可以指定使用网格。如果你指定正数,则被选择的坐标将是指定数值的整数倍,例如,可以被使用让在你的游戏中的实例保持对齐。可以指定水平定位与垂直定位。也就是后面说到的吸附网格。

对齐到网格

使得你可以把一实例的位置定位到网格上。你可以指定水平和垂直两者的定格数值(就是网格的最小单位的尺寸),对制作智能定位游戏是很有帮助的,比如炸弹人系列。

设置房间贯穿

用这个动作,你可以使物体在房间里贯穿。例如从左边出去,会从右边出来。其他方向类似。

移动到接触位置

设定运动方向,直至碰到物体为止。如果物体当前的位置已经有碰撞,那将不会运动。 否则物体会移动直到碰撞发生。 你可以指定一个方向以及一个移动的最大距离。比如说一个物体正在下落你可以指定它在碰撞到另一个实例之前运动的最大距离。 还可以指定这种效应发生是只针对碰撞到固体物体还是全部物体。很典型的你可以把这个动作放在碰撞事件中用来让实例产生朝一个特定位置运动,当在中途中遇到其他物体就停下来的效果。

碰到物件反弹

当你在碰撞事件放入这个动作,实例会自然的从物体上反弹开。假如你设定“精度”参数为“不精确”,只有水平的和垂直的墙壁才会被正确处理。当你设定“精度”参数为“精确”时,倾斜(甚至弯曲的)墙壁也可得到令人满意的处理结果(但是速度稍慢)。你也可以指定是否是从固态物体,或是从所有物体上反弹。注意弹跳的路径有时不是完全正确的,但在大部分情况下效果是很好的。

主要一

该组动作与物体实例创建、变化、和清除有关。

创建一物体实例

创建一物体的实例。可指定创建哪种物体及创建实例的位置,假如你勾选“相对”复选框,则创建位置为相对于当前实例的位置。在游戏中创建实例是相当有用的:如一艘宇宙飞船可以创建子弹、一炸弹可以创建一个爆炸等等。在一些游戏中你还将要一个控制物体来不时地创建怪物或其它的物体。在新的实例被创建时,会执行被创建物体的建立事件。

建立移动物体实例

与上面的功能类似,但有两点不同。这动作不但可以在某位置创建一个实例并可给予它一个运动方向和速度值,使之开始运动。当勾选了“相对”复选框时,只是位置相对,而不是速度和方向。例如,用这动作创建移动的子弹有个小技巧。在相对于飞机的位置0,0创建子弹。方向就用飞机的方向,直接在方向上输入direction。(这是一个表示当前飞机的移动的方向变量。)

随机创建物体实例

你可以用这动作创建指定的四种物体中的一种创建实例。你要定义这四种物体和创建位置。这四种物体中的其中一种会创建于该位置上。如果选了“相对”,创建位置会相对于当前位置。如果你想选择少于四个物体,可以用“No object”表示。这可用于在某个位置创建随机敌人。

更改实例

将当前实例换成别的物体实例。例如,你可以将一炸弹实例更换为一爆炸实例。更改后全部的设定值,如运动或是相关变量的数值,保持相同。你可以指定是否在当前物体上执行清除事件及为新物体执行创建事件(即“完成事件”)。

摧毁实例

用此动作你可以摧毁实例。自身、其他、或者对象。

销毁一个位置上实例

用此动作让你摧毁所有进入到某一位置的实例。例如当你使用一个爆炸时相当有用,当你勾选“Relative”复选框则该位置为相对于当前事件发生物体的坐标。

更改精灵图像

这动作你可以用于更改实例的精灵图像。你指定新的精灵图像,如果是gif动画的图象还可以指定它的桢数。通常都用0(第一张图象)。如果你不想更换当前显示的子桢图象的时候,你也可以用-1。最后,你可以指定精灵图象动画的速度。如果只想看到某一确定的子图,可以将速度设置成0。如果速度比子图象个数大,会循环跳桢显示。不要使用一个负的速度值。更改精灵图象是比较重要的。例如,

你常常想按实例走动的方向来设定不同的精灵图像,可为角色在每一方向(一般为四个方向)做一不同精灵图像。在键盘事件内用箭号按键来指定运动的方向和更改精灵图像。

变形精灵

使用此动作用来更改实例精灵图像的大小和方向。使用缩放值来放大和缩小图象,使用度数值来使图形产生逆时针旋转。例如,如果想按照方向值来旋转,可以在度数输入“direction”。同时可以指定图像水平或者竖直镜象。

设置精灵混合

使用这个动作你可以改变精灵图形的颜色。你定义的这个颜色和当前精灵图象混合显示,如果你想在游戏中用不同的颜色 来显示一个精灵图象你最好把精灵图形制作为一个黑白的图象并用混合颜色来改变它的颜色。同时你也可以指定精灵图象的显示透明度。数值1为完全不透明,0为完全透明。中间值用来设置部分透明效果。这个动作用来制作爆炸效果时非常好的。

播放声音

使用这个动作你可以播放一个先前增加到你的游戏中的声音。你可以指定播放声音的方式,播放一次(默认值)或循环播放。多个wave格式的声音是可以同时播放的。如果你使用midi文件那么一个时间内你只能播放一个文件,其它的midi会停止。

停止声音

停止播放指定的声音,假如多个实例的这种声音都正播放,则全部停止。

如果声音播放

如果有一个指定的声音正在播放那么执行下一个动作。否则就跳过执行下个动作而执行后面的动作。你可以勾选NOT得到相反的效果。比如你可以用这个动作来测试是否有背景音乐正在播放,没有的话就播放一个新的背景音乐。

到先前的房间

移到先前的房间,你可以指定在不同房间中的切换效果,假如你在第一个房间中得到一个不好的效果,用试验决定怎么做最好。

下一个房间

移到下一个房间,你也可以指定切换效果。

重新开始当前房间

当前房间会重新开始,你可以指定换房间效果。

到自定义房间

使用动作使得你可以去一个特别的房间,你可以指定房间和切换效果。

如果上一个房间存在

这个动作测试是否有上一个房间。如果有下一个动作就被执行,你可以使用这个动作测试是否有上一个房间。

如果下一个房间存在

这个动作测试是否有下一个房间。如果有下一个动作就被执行,你可以使用这个动作测试是否有下一个房间。

主要二

这套动作用于处理一些定时,显示消息等动作。

设定一计时器

使用这个动作你可以为物体实例设定12个计时器中的任一个,你要指定步数和计时器编号。在经过指定步数之后,实例将接收到相应的时钟事件,你也可以由勾选“相对”复选框来增减数值。假如你设定步骤的数目到小于或等于0就是关闭时钟,则指定的给计时器的事件就不会发生。

暂停

使用这个动作使得你可以使场景暂停一段特定时间,通常用在开始或结束一个关卡时,或当你要给玩家某些信息时。你可以指定的数值(以毫秒当单位)来暂停游戏。你也可以指定是否屏幕一开始重绘来显示游戏最后一幕暂停时的场景。

显示一消息

这动作你可以在一对话框中显示一消息。你可以直接输入要显示的消息。在消息文本中假如你使用#符号则它将会换行(如果你想输出\号,则要用\代替)。若消息文本以引号或双引号符号开始时,则此讯息代表一个表达式。关于表达式,后面有更多介绍(注意当你的游戏在调试模式下执行时,不可以使用消息功能)。

显示游戏信息

用此动作你可弹出游戏信息窗口,后面有专门章节介绍。

重新开始

用此动作重新开始游戏。

结束游戏 用此动作退出游戏。

保存游戏

用此动作你可以保存当前游戏,你键入文件名来存盘(游戏文件会被存在游戏工作目录中)。之后可以读取。(请注意,只会保存一些基本的状态。例如一些当前播放的音乐,数据结构,粒子等是不会保存的。)

载入游戏

从文件中载入游戏。你指定文件名。要确认要加载的游戏存档是与当前的游戏用相同版本的GameMaker制作的。不然将发生错误。

控制动作

有一些动作可以用语控制是否执行某些动作。大多数这些动作都会问一个问题,例如一个位置是否为空。当答案是对的时候(真)则执行下一个动作,否则动作将被跳过不执行。假如你想要执行多种动作(或跳过,视结果而定)则需要由在动作两边放置起始及结束区块(三角形符号那种,在C语言中相当于用来指定区域的大括号“{}”)。你也可以用else来执行当条件为假的时候的动作。通常大致如下:

这里的问题是某位置对当前物体实例是否为空。如果为真,物体会执行下面的移动动作。如果为否,会执行else后面的动作块,即跳到一个指定的位置。 所有的问题都有个NOT的复选框。如果选上了,会达到相反的效果。也就是,如果条件为否的时候,执行后面的动作或动作块。

有些问题是相对于某一类物体的。这类问题如果当指定的那类物体其中一个物体实例满足条件就会返回响应的值。 下面来介绍一下各问题的功能吧。

如果位置为空

若当前的实例在指定位置不与物体产生碰撞,则问题的返回值“真”。你可以指出该位置为相对或绝对。你也可以指出碰撞的是只有考虑碰撞固态物体还是全部的物体,此动作通常用于检查物体实例是否可以移到一特殊的位置上而不和其它物体实例重叠或者碰撞。

如果位置存在物体

是先前动作的相反动作。如果在指定的位置存在物体返回“真”。

如果物体在位置上

若在指定的位置上存在一指定的某类物体,则其返回值为真。

如果物体的数量为某一数值

你先指定一物体和一数值。假如当前物体的实例数量等于指定数值时,则返回值为“真”。通常用来检查一个物体在房间上的实例数目是否为0,如果是,就结束当前关卡或者游戏。

随机一定几率为真

你先指定一个数值,例如为n。那么,下一动作或动作块的执行概率则为n分之一。也就是按概率来执行动作。n越大,下一动作执行的概率越小。如果为1.5,则概率为三分之二。如果少于1,就没意义了。

如果提出问题为真

你指定一个问题,一个对话框显示给玩家,上面有是和否的按钮,当玩家解答为是时此动作的结果是“真”。此动作不可以使用于调试模式下。

如果表达式为真

你可以输入一个表达式,如果表达式为真,则将执行下一个动作,后面有更多有关说明。

如果鼠标按下

假如指定的鼠标按键被按下则返回值为真,通常使用在步事件中。例如:你可以检查是有按压下一个鼠标键,如果是,则移到鼠标位置(使用跳到一指定位置动作,输入坐标数值mouse_x 和mouse_y)。

如果实例对齐网格

假如实例的位置是在一网格上,则返回真。你可指定水平的和垂直的网格线距离。在某些特定的动作中,例如当实例被指定在网格上移动时,是非常有用的。

区块的开始

指出动作块的开始位置。相当于C语言中的“{”。

区块的结束

指出动作块的结束位置。相当于C语言中的“}”。

其它

当问题的结果为其他情况时,执行在其它(else)动作后面跟着的动作或动作块。

重复下一个动作

此动作用于重复执行下一个动作或动作块,你只要指定重复次数。

跳出当前事件

当遇到此动作时,原先在此事件的动作不再进一步执行,通常使用于一个问题之后,例如,当一个位置是空的,什么也不需要被执行,所以我们跳出事件。

执行一段代码

当你添加该动作的时候,会弹出一个窗体,你可以在上面写入要执行的代码。里面可以是一些函数的调用或者是零散的代码。这只用于使用些较简单的代码。如果比较复杂的,建议用脚本。关于代码和脚本在后面有介绍。

注释

用这个动作可以添加一些关于动作的注释方便别人阅读。是没有执行效果的。

设置变量的值

游戏里面有很多内建的变量。用这个动作你可以改变这些变量的值。你也可以定义自己需要的变量。当你勾选了“相对”的时候,会相对于当前该变量的值进行改变。要注意,该变量之前必须有值。

如果变量的值为某值

这动作检测如果某一指定的变量为指定的值的时候,则返回真。你也可以设置是大于或等于指定的值。

绘制变量

使用此一动作,你可以在屏幕指定的位置上画出变量的数值,此功能常用于在屏幕上画出当前分数。

分数动作

大多数游戏里,玩家都会有相应的分数。并且一些游戏还给玩家一定数量的生命机会。最后,玩家还可以有健康值。接下来的动作会很容易的实现玩家的分数,生命和健康值。

设定得分值

GameMaker自身有一套分数机制,分数可以显示在窗口的标题栏上。你可以用该动作来改变分数。你可以为分数设置一个确定的值。但一般都是勾选“相对”复选框,在原来的分数上增减。

如果玩家得分为一个数值

这是一个控制动作,当分数等于、大于或少于指定的数值时,如果符合条件,则返回真。通常用来测试玩家是否得到多少分以上给予奖励什么的。

绘制分数

需要指定显示位置以及放在得分数值前的内容。这类关于绘制的动作只能放在绘制事件中。

显示高分榜

对于一些积分类的游戏都会有得分排行榜。这个动作就是显示这个排行榜,如果当前玩家的得分在前10名内,系统会自动要求你输入你的名字并记录。你可以指定榜的背景图象,窗体是否显示边框,以及各种颜色参数等。

清除积分排行榜

这个动作清除积分排行榜的积分清单。

设置生命

设置生命值。跟分数的设置类似。只不过代表的东西不同。当生命小于或等与0的时候,会触发“生命数为0”事件。

如果生命

如果生命值为某个值。

绘制生命数目 绘制生命数目。

用精灵绘制生命数目

这个动作以图形的方式来显示生命。(就是相当于有几次玩的机会,一般游戏中会显示X5这样的字样表示你还有五次机会可以玩,死一次减一次机会)你可以使用小图形来显示(比如一个桃心代表一个人,五次机会就绘制五个桃心),你指定显示图形的位置以及用来显示的图形,这个动作必须放在绘制事件中。

设置生命值

GM有一套自己的生命值系统,当数值为100时为满,为0时代表已经没有分数。你也可以自己指定这个生命值数值。当生命值为0时,会触发“生命值为0”的事件。

如果生命值为一个数值

当生命值为一个你指定的数值时,返回真。执行下面的动作。

绘制健康条

使用这个动作你可以图形方式绘制生命条,当生命值为100时生命条完全填充绘制,为0的时候时就是空的。你可以指定生命条的大小和颜色等。

设置窗口标题信息

一般你可以用游戏的窗体来显示游戏得分等。使用这个动作你可以自己设定窗口的标题内容。

绘制动作

一般在每一步中,每一个物体实例都会将它的精灵图象绘制在房间内。你可以通过绘制动作来改变它的绘制内容。(注意,这些只在物体可见时才可以看到效果。)

免将所有的精灵图象都加到游戏文件里去。例如,在关卡开始的时候,你可以替换要用到的精灵图象。注意不要将正在被物体用到的精灵图象也被替换了。这样会得不到想要的碰撞效果。这个动作只在注册的版本可用。

从文件替换声音

这个动作你可以用音频文件(格式为wav,mid或者是mp3)来替换一个声音。你要定义被替换的声音和音频文件。这可以避免在游戏里存太多的声音。例如,你可以从文件中加载不同的背景音乐。但不要也将正在播放的音乐也替换了。这个动作只在注册的版本可用。

从文件替换背景

这个动作你可以用图象文件(格式为bmp或jpg)来替换一个背景资源。你要定义被替换的背景个要调用的图象文件。这避免了在游戏里加入太多的背景资源。这样仪不要将正在用到的背景也替换了。这个动作只在注册的版本可用。

控制动作

在高级模式下,多了两个控制动作。

执行脚本

这个动作你可以调用你编写好的脚本资源,你要定义要调用的脚本和最多5个参数。如果脚本的参数过多,可以用代码调用。后面章节会讲到。

访问继承事件

这个动作只对有父对象的物体有用。它会访问父对象的相应事件。

绘制动作

在高级模式下,多了一个绘制动作。

设置绘制文本字体

你现在可以设置要绘制文本的字体了。但你必须添加有一种字体资源。如果你选择了“NO font”,你可以使用默认的字体Arial 12磅。

粒子动作

在高级模式下“高级”标签里有一套粒子系统。这些动作只能在注册版的GameMaker里可用。

粒子系统主要是用来做一些特效的。粒子是一些小的元素(由一个像素或者一个小形状)。这些粒子会按照设定的规则移动,并且可以在移动时改变颜色。这些粒子组合在一起就可以创建例如火焰,烟火,下雨,下血,星星,飞行的碎片等效果。

Game Maker包含了一个功能强大的粒子系统,你可以用函数来调用。一个有限的粒子系统可以通过以下的动作来调用。

一个粒子系统可以做不同类型的粒子。当创建粒子系统的时候,首先要做的是定义粒子类型。如果你用下面的动作,你可以定义16中类型的粒子。每种类型都有形状,大小,开始颜色和结束颜色。颜色会逐渐从开始颜色变到结束颜色。粒子有一个生存时间。在类型里你要定义最小生命值和最大生命值。粒子还有速度和方向。并且,粒子也是有重力和摩擦力。

当定义了粒子类型之后,你必须把它们加入到房间某个位置去。你可以在某个位置以爆发式或者流发式创建粒子效果。粒子由发射器发射出来。粒子系统最多可以同时支持8个发射器。所以当你定义了粒子的类型之后,你必须创建一些发射器,告诉它们是爆发式发射器还是流式发射器。

这里有一整套设置粒子的动作。最好多试验来达到想要的效果。

创建粒子系统

这个动作用于创建粒子系统。在定义其它动作前必须使用该动作。这动作你只需要调用一次。你可以说明粒子被显示的深度。如果你使用一个很大的正数深度,粒子会显示于物体的后面。如果你使用一个负数深度,粒子会显示于物体前面。

破坏粒子系统

这个动作用于破坏离子系统,释放它占用的内存。不要忘了调用这个动作(当你要跳到一个不同房间的时候)因为粒子系统要消耗很多内存。

清除粒子系统中所有的粒子

这个动作会移除所有当前看到的粒子。但它不是停止了发射器,所以如果你设有流式发射器时新的粒子还会再次被创建。

创建粒子类型

这个动作你可以创建一种粒子类型。你先要选择你创建的类型(类型没有特别的意思,只是区分不同的粒子类型,相当于名字。)。你可以定义粒子为形状或者精灵图象。如果你选择有精灵图象,则会使用精灵图象。如果你将精灵图象设成

“no sprite”,则会使用形状。有许多内建的形状。你也可以定义它的最小和最大尺寸(粒子会以最大最小值之间随机一个值为尺寸出现)。最后你可以定义尺寸每步的增量。用一个负值来表示减少。要注意,这只是创建了一种粒子类型,而没有加到房间里去。如果要加到房间里,你需要发射器。

设置粒子的颜色

粒子是可以有颜色的(默认是白色)。这个动作你可以设置粒子要用到的颜色。你要定义要用到颜色的粒子类型。接下来,你要定义颜色的模式(混合或者渐变)。混合是粒子会以设置的两种颜色之间的随机颜色出现。渐变则是粒子从出现到生命结束是由第一种到第二种颜色渐变。两种颜色你都必须设置。最后,你可以设置透明度。设置当粒子开始时和生命结束时的透明度。透明度会从这两种中渐变。一般都会将透明度设置成从大到小。粒子就可以从有到无到显示。

设置粒子的生命

粒子的生命是指粒子能在房间里生存的步数。当设置了这动作的时候,使用这个动作的粒子类型你会看到粒子消亡的效果。你可以设置两个值,粒子会从两个值之间选择一个值作为实际的生命值。

设置粒子移动

这个动作你可以为一个粒子类型设置运动方向和运动速度。和其他设置一样,也分别为方向和速度设置两个界限。例如,让粒子向随机方向运动,可以将方向设置为0到360度(水平向右为0)。你也可以定义摩擦力,在每一步里,物体的速度减去设置的数值,直到物体速度为0。(当然你也可以用一个负的摩擦力来增加物体的速度。)

设置物体重力

这个动作你可以为某个粒子类型设置重力,有方向跟大小两个参数。方向中270是指竖直向下。

设置第二种粒子

这会有一点难理解。粒子可以在它们生存或者死亡时创建另一种粒子。这个动作你可以这样去设置。你可以定义当粒子生存和死亡时各必须被创建的另一种粒子的类型和数目。这里你要小心了,你会很容易就将粒子的数目设大了,这样会降低系统的运行速度(画面会变得很卡)。这个数目你也可以将它设成是负数的。一个负的值x的意思是创建的概率是1/x。例如,如果你想让粒子每4步创建另一种粒子,你可以将数目设成-4。这个动作对做一些特效如尾随效果或放烟花的效果是挺有效的。

创建粒子发射器

这个动作用于创建粒子发射器。粒子是有粒子发射器发射出来的。你可以最多创建8个发射器。选择发射器并且定义它的形状尺寸(是以盒状的形式的)。

破坏发射器

这个动作用于破坏发射器。你要知道发射出粒子后,发射器并没有被移除。如果某发射器你不想再用了,就可以将它破坏掉。

将发射器射成爆发式

即使你已经定义了粒子类型和发射器,但还是没有粒子效果出现。你还需要告诉发射器要怎么去产生粒子。这个动作你可以告诉一个粒子发射器发射的粒子类型和粒子数目。这些粒子只产生一次。数目值你也可以将它设成一个负值。一个负的x值的意思是粒子被创建的概率是1/x。例如你想产生粒子的概率为25%,可以用值-4。

将发射器射成流发式

这个动作你可以告诉一个粒子发射器以流发式来发射设定的粒子类型和粒子数目。每一步都会创建该数目的粒子。形成一个离子流。发射器会一直地发射粒子,除非你将发射器破坏了或者将发射数目设成0。数目值你同样也可以设成负值。而负值的意思通过上面的讲述你也应该明白了吧,就不再罗嗦了。

其它动作

在lib库还有几个其它的动作。

播放CD

这个动作你可以用来播放默认光驱里面的CD。你可以定义开始的轨道和结束的轨道。

停止CD

停止当前播放的CD。

暂停CD

暂停当前播放的CD。

继续播放CD 继续播放暂停的CD

如果光驱有CD

这是一个条件动作,如果有CD在光驱里面,返回真值。

如果CD正在播放

也是一个条件动作,如果CD正在播放,返回真值。 在某些游戏里,下面这两个动作还是挺有用的。

设置鼠标指针

这个动作你可以用精灵图象来替换windows的鼠标指针。你可以定义要替换指针的精灵图象和显示方式。精灵图象可以是动态的gif。要注意,精灵只会被显示在房间里,而不是游戏窗口外的区域。

在浏览器里打开一个网页

你可以在动作里说明要打开的网址。这个网页会在电脑的默认浏览器里打开。(这个动作也可以打来其他的文档。)这个动作在安全模式下不可使用。

房间

场景在GM有许多选项,在之前的章节我们只讨论了最重要的一些,在本章节我们将讨论其它的一些选项。当你在高级模式里面打开一个房间时,会出现如下的窗口:

绘制动作只有在绘制事件中才有意义,基本上在其它的地方它们是被忽视的。请记得绘制不同精灵图像和背景图像,它的执行速度是相当地缓慢,所以只有在一定需要时才使用。

绘制一精灵图像

你指定精灵图像位置(以当前实例位置为原点,可指定相对或绝对位置)及精灵图像的子图像(子图像数值是从0往上加)。如果你只想要画第一帧子图像,使用数值-1。

画一背景图象

你指定背景图象位置(绝对或相对)和图像在房间中是否要背景平铺显示。

绘制文字

你指定文字和位置。“#”符号在文字中是被解释为换行(如果你想绘制“#”号,则要用到“\\#”。),这样你就可以绘制多行文字。假如文字以引号或双引号引住,则它是被解释成一表达式句。例如,你可以使用‘Score:’+String(Score)来显示分数的数值。(分数变量(Score)贮存现有分数,函数String()将分数(score)数值转成字符串形式,+用来结合二个字符串)用类似方法你可以绘制显示任何其它的变量。

绘制变形文字

和上一个动作有类似但是这个动作你可以指定在水平以及竖直方向上的拉伸比例值来改变文字大小,还可以指定文字旋转角度。

画一矩形

你设定矩形二个对角的坐标,使用绝对坐标或相对于当前实例位置的相对坐标。

绘制水平渐变方形

使用从左到右的渐变颜色来绘制一个矩形,你指定矩形的渐变颜色以及坐标。

绘制垂直渐变方形

和上面动作相同,这里渐变是从上往下渐变。同样你指定渐变颜色以及矩形坐标。

画一椭圆

你设定椭圆外接四边形的对角坐标,使用绝对坐标或相对于当前实例位置的相对坐标。

绘制渐变圆形

同上但是这个动作中你指定由中心向外渐变的渐变颜色。

画一条线

你用线段两端点的坐标设定绘制一条线,使用绝对坐标或相对于当前实例位置的相对坐标。

绘制箭头

你指定两端的坐标以及箭头的大小尺寸。

设置绘制颜色

定义绘制时的颜色。让你设定颜色用来绘制各种形状/文字等(但是设定颜色对绘制精灵图象及背景无任何影响)

切换显示模式

用此动作你可以更改屏幕模式从窗口到全屏幕,或切换回来。你可以指定是否去切换模式或是直接到窗口(全屏幕)模式(此动作在调试的模式中无效!)。

从游戏截图

使用这个动作可以截下游戏窗口当前的图象并保存为图象。

创建特效

可以创建简单的粒子效果。可以定义类型,坐标、尺寸、颜色、层次等信息。如果你想创建复杂的粒子效果,后面有介绍。

变量与表达式

在许多动作里你都需要为参数赋值。除了输入一数字,你也可以输入一公式,例如32 *12。但事实上,你可以输入更加复杂的表达式。例如,假如你想要将水平的速度加速到两倍,你可以设定它成为2*hspeed,在这里hspeed 是可以设定实例当前的水平速度的一个变量。你可以使用许多其它的变量,最重要的一些变量是:

x:实例的x-坐标值 y:实例的y-坐标值

hspeed:水平的速度(每个步多少像素) vspeed:垂直速度(每个步多少像素)

direction:当前运动的方向,以度数(0-360)表示 Speed:当前在方向上的速度

visible:物体是否可见,可见visible=1,的或不可见的visible=0 image_index:该变量表示动画精灵图象当前显示的子图象。

image_speed:该变量表示动画精灵图象播放子图象的速度,如果值大于一,会跳过某些子图象。

image_scale:图像放大缩小的系数(1=等比例)

image_single:变量指定当前精灵图像中哪个子帧必须显示,假如你设定它到-1 (预设)就让帧形成循环,不然的话始终只有显示指定的帧(开始的号码为0)。 Score:当前的分数 lives:当前的生命数 mouse_x:鼠标的x-坐标 mouse_y:鼠标的y-坐标

大部份的这些变量你可以使用改变及设定变量的动作来更改。你也可以指定一个数值来定义属于自己的变量(第一次赋值时不要勾选“相对”,因为“相对”这种属性在变量定义前是不存在的,没有相对性的)。然后你可以在表达式句中使用这些变量。这些变量只是相对于当前物体实例而言的。只有当前实例才能直接调用。要创建一全局变量,输入“global”并在变量名之前加入一点 (.)。例如可以定义变量“global.hhj”。

你也可以访问其他物体的变量,在物体名称之前输入一圆点,例如,假如你想要一颗球移到硬币(coin)坐标那里,你可以设定球的位置成(coin.x,coin.y);在一碰撞事件中你可以使用other.x得到被碰撞物体的x-坐标。在有条件表达式你可以使用比较,如“<”,“>” 等等。

在你的表达式中你也可以使用函数。例如,变量函数random(10)可得到10以下的一任意随机实数值,如此你可以设定例如速度大小或运动的方向值为一任意的数值,更多功能及使用方法后面会有详细说明。

房间

现在你已经在事件和动作中定义了物体的行为,紧接下来就是创建在游戏中的房间或关卡了。任何游戏都需要至少一个房间,在这些房间中我们可以放置物体实例。一般游戏开始时会显示第一个房间,(除非你设置了跳房间的物体),其中的实例会依照创建事件中的动作执行各种动作。

创建房间时有许多选项和功能,除了添加物体实例你还可以设计背景,定义视角和使用图块等。大部份的这些选项会在后面讨论,这章我们将只讨论一些基本设定--增加物体实例,和背景图像的设定。

要创建一房间,从添加菜单中选择添加房间,则将出现下面窗体:

在窗体的顶部有一工具栏。这里你可以定义网格的大小。或者你也可以定义是否显示网格或者背景等。隐藏房间的某些东西有时候设计起来会方便很多。你应该知道,即使物体被设置成了不可见,但在添加到房间里依然是可见的,在游戏运行时会变为不可见。工具栏中还有“撤消”按钮和清空按钮。当设计好之后按“确定”按钮保存设置。

在左边你将看到三个标签(在高级模式下会有五个)。在物体标签中你可增加物体实例到房间。在设定标签中你可以为了房间指定许多设定。在背景标签中你可以为房间设定背景图像。

添加实例

在房间设计窗体的右边你可以看到当先设计中的房间,起初它是空的,有一灰色背景。

要添加实例到房间中,首先选择物体标签。第一是选择想要增加的物体,由菜单图标上的按键点选(或在左边的图像区域中点一下)。物体的图像出现在左边(注意在图像上有原点,实例会自动按原点对齐网格)。现在在右边房间区域中点选你的鼠标按键左键,一个物体实例出现了,而它将定位到指定的网格上(你可以在设定中更改网格)假如当置放实例时按住键不放则此实例不会对齐到网格上。在添加物体实例的时候,如果按住键且拖动鼠标,则会连续添加物体实例。你可以用鼠标右键来移除实例。当按住键时,按住鼠标左键可以拖动已经添加的物体实例。

你会注意到,假如你在原来的实例上面置放(按鼠标左键)一实例,原来的实例会消失了,通常是你想要的,但是有时未必如此。当你不勾选“删除重叠”时,就不会出现原来实例消失的现象。

当你右击物体实例时按住键,会弹出一个菜单。菜单里你可以删除实例,给实例一个精确的位置,或者将物体移到对顶层。

房间设定

每个房间有一些设定,你可以由切换到设定标签下修改房间的有关设定。

每个房间都有一名字,最好取一个有意义的名字。也有一个标题,当游戏执行时标题会显示在窗口标题栏上。你可以设定房间的宽度和高度(以像素为单位),你也可以设定游戏的速度。速度是每秒执行的步数,速度越大,运动效果越平滑。但是你将需要一相当快速的计算机来执行。

设定背景

切换到背景标签下,你可以为房间设定背景图像。事实上,你可以设定多重背景,标签页看起来如下:

在标签页上面你会看到背景颜色,在上面用鼠标点选来更改它。只有当你不使用一个背景图像覆盖整个房间时,背景颜色才有用,不然的话,你最好不要勾选描画背景颜色“改变背景颜色”复选框标签,因为将会浪费时间。在上面你可看到8个背景的列表,你可以一一地定义它们,但通常你只须要定义一或两个。要定义一个背景,第一步在列表中选择它,下一步当房间开始时,勾选复选框“房间开始后可见”标签,不然的话你将看不见它。背景名称在定义后将成为粗体,现在在菜单中指定一背景图像,你可以更改许多设定。

首先你可以指定背景图像将会水平平铺地或垂直平铺地贴在房间上,你也可以指定房间中的背景位置(也会影响到图块),最后可以给予它一水平的或垂直速度(每步多少像素)你可以制作卷动背景。还有一复选框标示着前景图像,当你勾选复选框,背景变成一前景,此前景将画在每个东西上而非在每个东西后面,显然若要使用这样的前景图像,应是部份透明的。

发布游戏

现在你也应该简单地做好了自己的小游戏,也该到了发布你的游戏的时候了。当你的游戏制作完成后,你肯定会想让很多人来玩你的游戏。当然,你可以直接把你的gm6源文件直接给你的玩家,前提是他也装有GameMaker。但是一般来说你并不想这么做,一来不是每个人都有GM,而且还要安装比较麻烦,二来你的源文件是你的辛苦结晶,如果用在商业游戏上的话那么你的游戏源文件更是不能随

意公布。因此你最好建立一个可单独执行文件(exe文件),在GameMaker中你可以很简单的就可以建立你的exe游戏文件。

在菜单“文件”中你选择“建立可执行文件”命令,在弹出保存文件窗口中输入游戏名称和选好路径,按“保存”按钮,你就可以在选择的路径下建立exe文件。在修改全局游戏设置里,你可以更改游戏文件生成后可执行文件的图标。设置选项中可以设置这个图标。

当你用上述的方法建立了你的游戏文件后,你就可以把它发送给你的朋友或者玩家了,或者把它发到网络上等。你甚至可以出售使用GameMaker制作的游戏。当然这样的话你的精灵图形,音乐声音等必须要是原创,或者在经得相关许可后发布。一般来说你需要把你制作的游戏文件打包成zip等压缩格式文件,你可以使用很多免费的压缩工具来实现,并且在压缩包中放如自述文件等。到此为止,你得游戏制作流程完成。我们的初级教程也就告一段落。

高级篇

这一章给出了关于GameMaker在高级模式下的更大多的功能的介绍。 在下面的页面可以找到各功能的介绍:

高级模式

到目前为止,我们已经简单的介绍过Game Maker了。但,还有很多功能。你可以在高级模式下运行GameMaker来使用更多的功能。这很容易转换。在“文件”菜单中,选择“高级模式”。(如想看到所有的效果,你最好重启以下GameMaker或者至少将你的游戏保存好再重新打开。)

当你在高级模式下运行时,包括了简单模式下所有的东西,但多了一些资源,按钮,菜单选项。我们还会看到,一些资源也多了许多参数的设置。这里我们将讨论一下各多出的菜单选项。

文件菜单

在文件菜单下,你可以找到下面这些命令:

·合并游戏:这个命令,你可以将另一个游戏跟当前的游戏的所有资源(精灵图象,声音,物体,房间,等。)合并在一起。如果你想重用一些资源,这样对你会很有用(例如菜单系统)。(注意,所有的资源和实例都会得到一个新的id,如果你直接使用这些资源,可能会出问题。)因此,你要确认两个文件的资源的名称没有重名,否则会有问题发生。

·偏好设定:这里你可以按自己爱好设置GameMaker的某些参数。

偏好设定

·在文件菜单中显示最近编辑过的游戏列表:如果选中此项,会在文件菜单下列出最近打开或编辑过的游戏。

·启动后自动读取上次打开的文件:如果选中此项,在打开GameMaker是,会自动打开上次打开或编辑过的游戏。

·保存文件备份:如果选中此项,当编辑过游戏再保存时,会自动以 gb0-gb9 为扩展名保存编辑前的副本。你可以用GameMaker来打开这些文件。在最大备份数量可以设置1-9个备份。这里强烈建议至少设置为一个备份。

·读取和保存文件时显示进度:如果选中此项,会在读取或保存游戏文件时显示进度条。

·启动时检查并删除陈旧的临时文件:GameMaker和游戏会创建一些临时文件。一般都会自动删除掉,但如果游戏崩溃了,就会流下残余的临时文件。GameMaker在开始运行时检测是否存在此类的文件,并将它删除掉。

·游戏运行时隐藏设计器并等待:如果选中此项,当测试游戏的时候,会自动隐藏GameMaker界面。

·在安全模式运行游戏:如果选择了,游戏会在安全模式下运行。(这可以防止一些木马病毒。)

·在精灵图象上显示原点及碰撞盒:在精灵窗体上,会显示原点和碰撞盒。 ·在精灵属性界面显示动作的鼠标提示:当选中此项,当鼠标停留于一动作时,会有提示气球出现。

·当关闭时移除房间外的实例:当选中此项,系统会提醒你是否想将在房间外的物体移除掉。

·关闭窗体时记住房间设定:选中此项时,一些关于房间的设定,如是否显示网格,是否移除重叠的物体等。会被保存,当你以后编辑时也会在设定的环境下。 ·脚本、代码和颜色:在后面脚本的章节会有详细的介绍。

·图象编辑器:默认是用GameMaker的内建编辑器,这里你可以设置调用外部编辑器。

·声音编辑器:你可以指定不同格式音频文件的外部声音编辑器。

编辑菜单

·添加分组:资源可以分组管理。这对些大型的游戏是很有用的。例如,你可以将用于一个物体的声音文件放于同一组,或者将某一关卡用到的所有资源都放一组。这个命令用于在当前选中的资源类型添加一个分组。会弹出一个对话框要求输入组名。分组又可以包含分组。你可以直接将资源拖到分组里面。 ·查找资源:你可以用此命令以资源名来查找并打开一个资源。 ·展开资源目录:这命令可以将所有目录都展开,显示出所有的资源。 ·收回资源目录:这命令可以收回所有的目录,隐藏所有资源。 ·显示对象信息:用于显示游戏里所有物体资源的信息。

添加菜单

这菜单里面,你现在一样可以添加多出的资源。要注意,每种资源在工具栏上都有一个相应的添加按钮。

脚本菜单

在脚本菜单下,你可以看到下列命令: ·导入脚本:这命令可以导入一个脚本文件。

·导出脚本:这命令可以将脚本保存为脚本文件,给其他人用。如果你选中了某个脚本资源,那只保存选中的脚本。同样,选择了一组将会将一组都保存起来。当你选择了根目录,或者选择了其他的资源,将会保存所有的脚本。当鼠标右击选中脚本资源的时候,也可以实现同样的效果。

·显示内建变量:显示一系列的内建变量,包括local的和global(公有)的。 ·显示内建函数:显示一系列的内建函数。

·显示常量:显示一系列内建常量和一些已定义的游戏选项。

·显示资源名称:罗列出所有的资源名称。你可以通过点击一个名称来打开相对应的资源。

·脚本中搜索:你可以在所有脚本中搜索字符串。你可以点击报道的位置来转到相应的位置编辑。

·检查资源名称:检查所有的资源名称。如果名称不正确将会被报错,是否有重名的资源名,或者资源名跟变量、函数、常量名重名了。你可以点击一个被包错的资源来打开并修改。

·检查所有脚本:检查所有的脚本是否有错。你可以点击报错的地方转到该地方进行编辑。

精灵图象

在高级模式下,对于精灵图象的处理提供了更多的功能。在下面页面可以看到详细的介绍:

编辑精灵图象

到目前为止我们可以从文件载入精灵图像。当然你可以从GameMaker中直接创建和更改,把鼠标指针移到资源目录一个精灵图像上,鼠标双击就可以打开精灵图像属性设置窗口(或新建一个新精灵图像)。单击“编辑精灵”按钮,则会弹出一个新的窗体,显示组成精灵图像的全部子帧图像。 精灵图像编辑窗体如下:

在右边窗口部分你看到组成精灵图像的不同的子帧图象。注意GameMaker里组成精灵的图像的全部子帧图象尺寸大小必须相同。在左边可以预览精灵(如果看不到预览效果,选中选项“显示预览”。)在预览下面,你可以更改精灵子帧动画播放的速度和背景颜色。这样,你可以得到你想要的效果。(要注意,这个速度仅是预览的速度。实际速度是根据房间速度的。不过你也可以通过动作或代码来改变想要的实际速度。)

精灵图像编辑有许多命令用来创建和修改精灵。这些都可以通过菜单来选择(有些在快捷工具栏上)有些命令只作用在个别的子图像上。但你先要用鼠标选择一帧再执行相关操作。

文件菜单

文件菜单包含许多有关读取和保存精灵图像的命令:

·新建:创建一新的,空白的精灵图像。必须指定精灵图像的尺寸。(注,在一精灵图像中的全部子图像须有相同的大小尺寸。)

·从文件建立:从一个动画文件创建一个精灵图像。有很多文件类型可以用。除了动画格式GIF文件读入时会自动将分成许多子帧外,其他文件类型都只能作为单一图像读入来创建一子帧。但你可在打开文件的对话框中同时选择多个文件作为多个子帧读入,读入的多个文件将组成一个动画,所以图形大小尺寸必须一样。注意文件读入后GM设置的透明颜色是子帧图形最左下方的像素颜色,而不一定是原GIF 文件中的透明颜色。

·从文件添加:从一文件读取添加一图像(或加子帧)如果你已建立好一个图像或帧。此时再加入图像的话如加入图像尺寸与当前精灵图象不同,则你只能通过选择放置当前图像显示位置来保持与所有帧尺寸一致。此时图象可能有部分显示不出来或是被拉伸以适应当前精灵图象大小。同样你可以读入多个文件。 ·另存为GIF文件:将精灵图像保存为gif文件。

·另存为strip:保存精灵图像为长带位图(bmp),将所有图像一个个放在一起。

·从Strip中建立:从一长带图中创建精灵图像,在后面有更多介绍。 ·从Strip中添加:使用此命令从一长带图中添加图像。

·关闭并保存修改:关闭窗口,保存刚刚对精灵图像的作的更改,如过你不想保存更改,点选窗口上的x直接关闭按钮。

编辑菜单

编辑菜单包含许多处理当前选择图像的命令。你可以剪贴到剪贴板、从剪贴板中粘贴图像、清除当前精灵图像、删除图象子帧,调整各帧的先后顺序等。下面是一些对单帧图象操作的命令。

变形菜单

在变形菜单中你可以对图像执行很多变形动作。 ·水平翻转:水平翻转图像。 ·垂直反转:垂直翻转图像。

·移动:在这里你可以指定一数值水平或垂直地移动图像。

·旋转:你可以旋转图像90度,180度,或指定任意度数,你也可以设定旋转后的图象质量。

·重定义画布尺寸:这这这里你可以更改图像画布尺寸大小。同时可以设定当前图象变换后新尺寸显示图象的位置(居中/左、右等)。

·伸展:拉伸图像到一个新尺寸,你可以指定缩放百分数和变形后图形质量。 ·缩放:缩放图像(图像的本身,不是图像画布背景的尺寸!)。你可以指定缩放比率、质量、和朝哪个方向缩放。

图像菜单

在图像菜单里你可以对图像(动画对象)执行多项操作。

·向左循环:全部图像帧向左边移动。所有帧向左移动一个位置,第一帧图像放到最后变成了最后一帧。这样可以从不同子帧开始动画。

·向右循环:全部子帧向右边移动。所有帧向右移动,最后一帧的图象放到最前面,成了第一帧。

·灰度处理:使图象黑白化(不影响透明颜色!)。

·色差:这里你可以更改图象的色调。使用滚动条来选择不同的颜色。

·局部色化:这里你可以更改图象部分的色调。你先要选择旧的颜色和精确度,然后选择用于代替旧颜色的新颜色。这样,你就可以改变局部的颜色。例如,你想把你的衣服颜色改了,而不影响你的肤色。

·改变色调:另一种更改图像颜色的方法。但这时候,所有的颜色都会改变,而且不同的颜色会有不同的变化。这种方法会得到比较有趣的效果。

·亮度:这里你可以拖动滚动条更改图像的色彩饱和度和亮度值来更改对比度和亮度。

·翻转:一般来说应该是“反相”。

·褪色:这里你设定一种颜色和一个范围值,使图像的颜色按值大小向指定颜色褪变。

·透明度:你可以指定一个透明度值,使图形按数值透明化。

·模糊:模糊图像时会将临近颜色混合在一起,产生朦胧效杲。数值越大,图象就会变得越模糊。

·轮廓:沿着图象画出轮廓。你会被问到轮廓的颜色和是否删掉原图象(仅留下轮廓)。

·边界:跟轮廓很相似,但这时不是画在图象的外面,而是画在图象边界的像素上。

·图框:这会使得图象变得尽可能的小。会自动裁剪让图像在不改变内容前提下尽可能去掉多余的部分。这个命令非常有用,因为图像越大,GameMaker花费的内存就越多。所以一般都会裁掉不要的多余的空白部分。为了不改变原透明色,你最好在图像四周留下一小边框的透明色空白这样使得图形仍是按原色透明处理。

你应该多试验这些命令来更改你的精灵,以达到你想要的效果。不过你觉得GameMaker内置的编辑工具功能满足不了你的游戏的话,也可以用其他图片处理软件处理。

动画菜单

在动画菜单下面你可以制作当前图象之外的动画效果。创建新动画有许多选项,要实现你想要创建的效果你必须进行一些操作试验,不过不要忘记经常保存哦。你也可以添加一些空白的图象和删除一些不想要的。现在来简述一下更命令的功能。

·设置长度:这里你可以修改你的动画长度。你可以指定帧数目,系统会自动照此数目重复足够的次数(通常你会将这个数目设为当前帧数值的整数倍)。

·拉伸:此命令也可以更改动画的长度。但不同的是,子帧图象会被复制或是删除以符合你设定的数值,所以假如你增加帧数目,动画会变慢,假如你减少数目,它会变快。要注意,若设置过小,可能会有图象丢失。 ·反转:此命令用来倒置动画,它可以使动画倒过来播放。

·添加反转:新增加当前图象一套反向的子帧,操作后帧的数目加倍。这对于一些左右走动的物体很有用,改变颜色并返回等等。某些时候,你会想去掉中间重复的那个图象来达到播放的连贯性。

·序列变换:可以创建移动动画效果,其中的子图像在播放时产生移动效果,你需要输入帧数和总的水平、垂直距离移动量。

·旋转序列:可以创建一个图像逐渐旋转的动画。可选择顺时针方向,或逆时针方向。设定帧的数目和旋转角度(360度即旋转一周,每帧旋转的角度等于旋转角度除以帧数)。(注意旋转时图像尺寸发生变化,所以最好设定一个大点的尺寸确定所有图像部分在旋转时依然可见,比如一正方体在旋转45度后高度会变,则如果图象尺寸不够大的话将使得图形部分角不可见,此时要更改画布尺寸来适应旋转后图象大小。

·色差:用来创建一动画使得图像过渡到一个指定的色像颜色。

·变换到颜色:创建一动画使得图像颜色由当前颜色转变到一个指定的颜色(最后会变成纯色)。

·消失:使用透明度逐渐变化得到逐渐消失效果。

·收缩:缩小图像到什么也没有,即是图象由大到小到消失的动画。你可以指定收缩方向。

·增加:产生从看不到到逐渐变大的动画效果。 ·下降:在一指定方向让图像变扁平到什么也没有。

·提升:从一指定方向举起图像,和上个效果相反,自己可以试试体会效果。 ·延伸:用别的动画或图像来产生覆盖动画。

·形态:从一文件中的动画或图像变形到当前动画。二个动画覆盖的图像有相同区域大小此时变形的效果最好,不然的话,一些像素会消失,而且其它像素会突然出现。

最后二个命令功能是很强大。例如,要得到爆炸物体效果,加入物体的多个同样的复制帧,再加上多个空的帧,然后用一爆炸动画来覆盖物体图象,或者通过变形到爆炸等等。经过一些试验后你应可以制作出很棒的精灵图像特效。

长带图

正如上面介绍的,精灵图象通常被保存为会动的gif图象或一张长带图。一张长带图是一张将所有的动作图象一一排列保存的大图。唯一的问题就是每张图象的尺寸没有被保存在图象里。并且,在网上可供使用的长带图一张就包括了所有的动作。例如,下面这张,包含了四种不同的动作的图象。

要从这样的文件选择个别的精灵图像,你可在文件菜单中选择“从strip中建立”或从“从strip中添加”。在选择一个长带图图像文件之后,将显示下面窗口:

在右边你看到(可能只是部分)你所选的长带图图像,在左边你可以对子图像的选定设定参数。在图像中的矩形表示当前被选择的图像,你可以设定以下的参数: ·图像数量:你想要从长带图中取出的图像数目。

·每排图像数:你想要在每列中取出多少图像。例如,使用设定值为1你将选到一连续垂直列的图像。

·图像宽度:单个图像的宽度。 ·图像高度:单个图像的高度。

·水平单独偏移:假如你不想要选择左上方图像,在这里你可以设定要水平地跳过多少个图像。

·垂直单独偏移:这里你可以设定要垂直地跳过多少图像。

·水平像素偏移:有时在左上方会有一些额外空白空间,在这里你可以指定数量(以像素为单位)。

·水平间隔:在某些长带图中,每个图像之间有空间隔开,这里你可以指定图像与图像的水平距离间隔距离(以像素为单位)。 ·垂直配额:图像与图像的垂直距离间隔距离。

设定完后单击“确定”来创建精灵图像。但在用别人的素材的时候要确认别人是否许可,且必须标明素材的出处。

编辑子图象

GM中你同样可以编辑子图像。选择一子帧并从菜单“编辑”中选择“编辑图像”,系统会打开内置的绘制工具。注意这个编辑器功能有限,其最主要的是用来对编辑好的图像中做些修改,虽然也可以用来作新图形,但还是推荐你使用一功能比较强大的外置图形编辑工具,通过保存或者通过直接把图象复制到放到GM编辑工具中。你也可以在偏好设置里面设置外部用外部的编辑器编辑图象。

图像显示在窗口中间,基本功能按钮在左边。你可以放大/缩小编辑区、绘制点、直线、矩形、文字等。有些绘图工具可以设置选项(如线的粗细或边框)。有一个特殊的按钮用来将某种颜色换成另一种颜色。特别是用于更改背景颜色来实现透明。在工具栏上还有几个特殊的按钮用于在某个方向上移动图象的像素。你也可以指定当图像放大缩小时是否显示网格 (只有在放大倍数大于4时可见网格)。

用选择工具,你可以选中图象的一部分。接下来,你可以将选中的部分移动到其他位置。通常,原先的区域会填充为左色(用鼠标左键选择的)。当按住键来移动选中区域的时候,原区域不变,会在目标位置复制一份。

文字工具也要说明一下。当选择了文字工具,在图象上点击时。回弹出一个对话框要求输入要显示的文字。用“#”号来换行。当单击“确定”时,文字会显示于图象上,而且还有边框围着。现在,你就可以直接移动刚加入的文字。“文本”菜单有命令可以设置文字的对齐方式和字体。

右边的表单中你可以选择需使用的颜色 (一个鼠标左键色,另一个右键色)。更改颜色有四种方法:首先你可以用鼠标按键(左或右)点选16种基本颜色中的任一种颜色。有个特殊的框表示透明色。你可以使用该颜色来让你的图像看起来透明;第二种方法是单击右下方的色谱更改颜色,这样你就可以选择更多颜色。按着并移动鼠标按钮,则可得到你所需要的颜色;第三,你可以在标示左边、右边颜色的颜色框上用鼠标左键点选,会弹出一颜色对话框,其中你也可以精确选择颜色;最后,你可以选择在左边的颜色吸管工具按钮,在图像中的一位置上点选以取得当前位置的颜色。

有两种特殊的情况。当按着键可以在原图象中选色(就如用吸管工具一样)。当画线时按着,会得到水平线或者垂直线或对角斜线。同样的,当画圆或者矩形的时候,按着键可以得到正圆和正方形。

在这个菜单你会看到与精灵图像编辑中很多相同的命令,它们用法和前面相同,只不过此时它们只适用于编辑当前图像。你可以保存图像为bitmap文件等。 菜单中有另外两个额外命令:

·清除:以左键颜色清除图像(然后左键颜色会自动成为透明颜色)。 ·渐变填充:使用这个命令你可以用一渐变色来填充整个图像(制作精灵图像时不常用,但效果不错,可以用于做些背景等)。

再提示一点时因为GM内置编辑工具功能善于后期制作,所以你在前期绘制图形时,应尽量使用一些专业图形制作工具如PS(即传说中的PhotoShop),FIREWORKS等,然后保存调入GM使用,或者直接粘贴到GM中调整使用。这样才能让你的游戏图形更加专业美观!(或许这些应该交给美工做?)

高级图象设定

在高级模式下,在精灵图像属性表单中有一高级属性标签,这里你可找到许多高级选项。

首先是与碰撞检测有关选项。不论当二个实例在何时相遇,即产生一碰撞事件。检查碰撞的机制是这样的:每个精灵图像皆装在一碰撞盒(虚拟的方框)中,碰撞盒就是包含全部子图像中非透明部份的集合,当碰撞盒有重迭时,它会对当前两个不同精灵图像根据像素重叠作重迭检查。如果你勾选了“精确碰撞”选项时,这项检测操作是相对较浪费时间的,需要额外的内存和运算,所以如果你并不要求指定精灵图像作精确的碰撞检查你就最好不要勾选精确碰撞检测的复选框,这样只执行碰撞盒(方框碰撞检查,比较节约时间)。但如果你确实需要较精确的碰撞,比如小子弹打在大卡车上,如果你没勾选卡车的精确碰撞,那么子弹会在没有碰到卡车而只是碰到卡车外虚拟的大方框时就爆炸或消失,这样得到效果很不真实,所以根据你的需要使用。

有些精灵图象的边缘看起来可能会有点粗糙,你可以勾选“平滑边缘”来美化图象。这样一来精灵图象边缘的糙点会选择性的透明化,图形看起来会漂亮一点。(当精灵图象要对齐到一些框格时,最好不要用,因此会在它们之间出现透明条痕)注这个效果只能在游戏运行时可见,在编辑时是看不到效果的。

游戏运行时精灵图像可以保存在个两个地方:显存和物理内存中。显存位于显卡中,比较快,所以若你有许多精灵图像,你可把它保存在这里,但显存的大小是有限的,依游戏者的显卡硬件定。建议你不要保存大型大量的精灵图像在显存中。有些游戏中,某些精灵图像只在一两个关卡/房间里使用,若始终把些精灵图像

放在内存中,则有一点儿浪费。在游戏运行中,精灵图形会转变成纹理,在使用前纹理一般会移到显存里,当“预加载材质”勾选时则在游戏加载时会先把图象加载入显存,如果你是制作大型游戏有很多精灵图象那么就不要勾选这个,这样GM会自动只在需要时才加载一些图形入显存。

最后,你需要指定精灵图像的原点,原点是在精灵图像中代表精灵图像位置的那一中心点(即在代码使用时代表物体x、y的点)。通常默认在精灵图像的左上方。一般把原点移到精灵图像中点或其它点需要位置会更方便,你也可以选择精灵图像区域外面的一个点当原点,注意更改原点可能会把原来己放置在房间里的物体位置发生一些改变(因为原点变化了),所以如在你在房间里放了有精灵图象的物体后,再调整原点时应注意观察物体在房间中的位置变化。再作出适当调整。

声音与音效

在高级模式下你可以更好地控制声音资源。当你添加一个声音时会弹出以下窗口:

除了基本模式里常规的按钮“读取声音”,“保存声音”,“播放”外,还有更多选项:

首先你可以指定声音的种类,四种可选,“普通声音”选项是一般的声音音效文件,糸统可以同时播放多个普通的声音文件,甚至可以同时播放同一个文件。“背景音乐”和“普通声音”文件类似但是不能同时播放多个而只能播放一个,所以一旦你启用了一个新的背景音乐,原来在播放的声音文件将停止,一般MIDI文件都会默认为背景音乐,“3D音频”是你可以通过功能函数使用3D音效设置效果的类型。

音效一般是通过DirectX来播放的,这提供了更多功能,但对于Wave与MIDI来说还是相对有限,如果你想播放其它的音频文件,像MP3,你应该选择“使用多媒体播放器”选项来播放。这相对来说有更多限制。不能更改音量或者设置声音效果,且每次都只能播放一个声音文件。还要需要注意的是MIDI文件,当使用播放器播放声音的时候可能听起来与正常声音或者背景声音的效果不相同,原因是播放器使用的是硬件声音平衡器(每台电脑都不相同),而不是使用软件来播放的(如用软件播放则声音听起来都差不多)。建议最好不要在你的游戏文件中加入mp3格式的音频,因为它们是被压缩过的,因此调用起来时间比较长而可能使游戏速度变慢,虽然MP3文件尺寸小,但并不代表读入时使用的内存和时间也少,且并不是所有的电脑都支持。所以你的游戏有可能不能在其他电脑上运行。 第二个是,你可以指定一些特定的声效,像“合声”以及“回声”(注册后的GM版本中才能使用),你可以搭配任何一种组合。你可以马上试听效果(如使用GML代码时你可以更精细的改变这些设置属性)

并且你可以指定声音是否从左扬声器过渡到右扬声器。

你可以指定所有的声音是否预读入内存,当一个声音文件播放时必须读入声音内存,如果你在游戏开始时预读入声音,那么在后面你可以立即播放。如果没有勾选“预载”,那么文件只在第一次文件使用时读取,这将会节省一些内存但是可能要花少许时间,因为使用时才读取会相对慢一点点,但如果你的电脑速度一般,建议你使用不读入内存。

GameMaker没有内建的声音编辑器,在偏好设定中你可以指定外部的声音编辑器用来编辑声音,如果已经选择了外部工具你就可以点击“编辑声音”来编辑当前的声音文件。(当你使用外置播放工具编辑声音时GameMaker窗口会自动隐藏,关闭外部工具后GameMaker窗口又会自动弹出。)

背景

除了从文件读取背景外,你还可以创建你自己的背景。单击“编辑背景”标签按钮,一个内置绘图程序将会打开,你可以建立或者更改背景图像。你会发现这个绘图程序功能很简单。如果你想制作专业图形效果你最好选用自己喜好的外部专业图形编辑器。在内置编辑器中有一个选项很有用。在“图象”菜单中有个“渐变填充”命令,这个可以用来建立渐变填充背景效果。 在高级模式中,背景属性菜单中还有一些新的选项:

背景边缘、特别是在使背景透明化的时候,边缘会看起来有点粗糙。要避免这种情况你可以勾选选项“平滑边缘”。这样一来背景的边缘的一些像素会根据图形的情况部分透明化。让图形看起来漂亮很。(如果你是用背景资源来填充背景,若勾选了“透明”的话,就 会在每部分之间出现透明间距)注意这个效果只能在游戏运行中看到,编辑时是不可见的。

在游戏进行中,背景图像会被转变为材质,而材质在使用前必须调入显卡内存(显存)中,当选项“预加载材质”勾选时在游戏运行前瞬间会把相应图形调入内存,在后面的游戏中就不会再有读取时间延迟。但如果你有很多的背景,那么还是建议你不勾选这个选项,因为这样会让GM读取游戏时花费很多时间。可以让这些材质到后面游戏运行时需要时再自动读取。

有的时候你可能想用背景作为一组图块使用,图块即是一些小图集合在一张大图象中。当你制作房间的时候你可以选出这些小的图形放置在房间的不同地方。这在建立很多比较好看的小关卡游戏时很常用,特别是像类似超级玛丽那种游戏。要将背景作为元件使用时,需勾选选项“当图块用”。则会显示如下的窗口:

你可以为图块背景设置很多选项。特别是可以为每个小图块指定长宽(只能给定一个尺寸,所以之前最好保证所有的小元件图形都有相同的尺寸,如果有不同的尺寸,可能会有元件分离的现象)。你可以指定小图块的偏移量(元件从哪个顶点开始),最后还可以指定分割量(一般赋予0或者是1)。在房间章节中有更多关于图块使用的介绍。

物体

在你创建了一个物体后,你可以在高级模式中作更多设定。

深度

首先,你可以设定实例的深度,GM在屏幕上绘制实例时是依照深度来绘制的。先绘制最深的(最底层depth--也即depth数值最大的)最后绘制深度最小的(最上层的。depth最小的)物体实例。当实例有相同的深度(层次)时,它们是按创建的先后顺序来绘制,假如你想要确定一个物体实例在其它物体的上面时,把它深度设置为负值,假如你想要确定它在其它的实例的后面,则深度设大的正数(越大越置后)。在运行游戏时,你也可以中途更改实例的深度,使用depth变量在代码中更改深度。

持续

第二,你可以制作恒定物体,就是当你从当前房间移到另一房间时,恒定的物体将继续存在于下一个房间中。因此,只要你在房间里放入了一个持续的物体,它就会出现在所有的房间里面。只会在当你破坏它时才会消失。使用恒定物体功能很实用,但同时也会因容易忘了取消而出错。

父对象

每一个物体可以有一父物体。当一物体有一父对象时,它就继承父物体的行为动作。或者可以说,被定义的物体是它的父对象的一种特殊物体。例如,假如你有4个不同的球,分别叫ball1,ball2,ball3 和ball4,全部的球有相同的行为但是精灵图像不同,你可以将ball1制作成其它的三物体的父物体,然后你只须为ball1设定事件,其它的物体将继承父物体ball1的事件,产生有相同的行为动作。同样地,当你把新动作加到父物体的实例上的同时,动作也将被加在子物体上,所以,例如,假如你摧毁全部ball1 的实例,ball2,ball3,和ball4 实例也将被摧毁,这样在有些时候你可以节省许多的工作量。

通常来说,一大群子物体可能会有大多相同的表现,但在一些地方会有一点点不同。例如,某个怪物可以上下移动,其它怪物则只能左右移动。除此之外它们其它的行为都相同。在这种情况下子物体的事件动作几乎完全相同,只有一两个行为不同。此时同样的我们也可以制作一个父物体。但是这种情况下,我们需要为子物体定义特定的一种的事件。这个事件“超出”父物体事件的范围。当子物体里加入了事件动作,这些事件会代替父物体的事件来执行动作。假如你想要执行父物体事件,你可以用动作激活一种“继承”事件,即执行父物体事件的动作。 像这样创建一个基层物体是很有用的。这个基层物体包含了所有默认的行为动作,但游戏又不会真正用到它。所有的物体都将它设成父对象。父物体可以又有父物体,以此类推(很明显,你不能制造父物体的三角循环)这种方法,你可以建立一个物体阶级体系。父物体制在保证游戏结构化上是非常有用的。强烈建议学会使用这个功能。

父物体还有第二种用法,也可以继承碰撞行为。让我举一例子来解释。假定你有四个不同的地板物体,当一个球击中一个地板物体它更改方向,这在球与地板的碰撞事件中必须指定。因为有四种不同的地板,故我们需要把脚本代码放在球物体与地板碰撞的四个碰撞事件内,这样很麻烦。但是当你把一个地板物体设置成为其它的三地板的父物体时,你只须指定一个地板父物体的碰撞事件就可以了,其它(与不同地板)的碰撞将执行父物体相同的碰撞事件。同样,又节减了许多重复的代码。

如同前述,只要你用了一个物体,也意味着它的子物体都会发生同样的动作。如有某个动作必须用于某个确定的物体。你可以用代码with()来实现。当你用到如instance_position,inatance_number,等语句的时候,它也会执行。当你使用with等函数给指定父物体实例赋予变量新值时,如设置父物体速度为10,则同样地ball2,ball3和ball4也得到相同速度。

遮罩

当两个实例相遇时碰撞事件发生,精灵图像碰撞框决定是否实例相交。在大多应用中碰撞都没问题,但是有时你想要使用另外的一种形式的。不规格的外形碰撞

效果,例如,假如你制作一45度倾斜角度游戏时,物体通常都有一高度(为了让它们得到仿3D效果)值,但是你只想要使用精灵图像的底部参与碰撞,这种情况你就可以藉由创建一个底部外形的图像来实现,而这个称为遮罩的图像就是为了用来产生碰撞效果的。

显示信息

表单上按钮显示信息可以显示所有与物体相关的信息。这对你想看物体的总览信息时有用。

更多的动作

在高级模式下有更多的动作可以用。下面的页面有更多的介绍:

移动动作

在高级模式下有多出了几个移动动作。

为物体设置路径

使用这个动作你可以指定物体实例遵循一个制订的路径运动,你定义好路径以及每一步在路径上运行的速度。当速度为正数值时实例从路径的开始端开始运动,当为负值时从路径的末端开始运动。下一步再指定各种路径行为,比如说,到路径结尾时应该发生什么动作。你可以选择停止运动或者从开始处再重新运动,或者从当前位置再执行一次路径移动(此时路径为相对的位置即相对的运动),或者是从路径结尾反向向起点运动等。最后你可以指定路径本身位置相对或绝对性,这在一个场景中让路径固定运动而不至于发生大偏差时很重要。在路径章节中会有详细介绍。

结束路径

使用这个动作取消实例使用的路径

跳转至路径位置

使用此动作你可以改变物体在当前路径上的位置。必须指定在0和1之间的值,(0为开始点,1为结束点,中间的位置点值介于0和1之间)

设置路径速度

使用这个动作你可以改变物体在路径上运动的速度值。负值将使物体向路径相反方向运动。设为0将可以暂时使物体停止运动。

在步中向位置方向移动

这个动作要放在step事件中来让物体实例产生朝一个点的运动,当实例已经在这个目的点位置时将不发生运动,你可以指定这个点的位置,以及速度(每个step移动步数),以及当实例碰到一个固体或者撞到任何实例时停止。

在步中向位置方向移动并绕开障碍物

这是一个非常强大有用的运动动作,需要放在step事件中,象上一个动作它给实例指定一个点位置,但是这次当实例运动时将会自动避开实体物体。当实例碰到固体(或者任何其它实例,可以自定)物体会自动更改方向然后试着避开障碍绕障碍运动。这种方法不能完全保证最后能很精确到达目的地但是只要设置好还是很有效的。在后面运动计划函数里会有详细说明,你在动作中只要指定目标点,速度,以及是单就避开固体还是任何实例就可以使用这个功能。

主要动作

在高级模式下还有更多的主要动作可用。

设置时间轴

(仅在高级模式下使用。)这个动作你将一个时间轴赋予给物体。你要定义时间轴和时间轴的开始位置(从0开始)。你也可以选择“No Time Line”来结束时间轴。

设置时间轴的位置

(仅在高级模式下使用。)这个动作你可以改变当前使用的时间轴的位置(绝对或者相对都行)。这可以用来跳过或者重复时间轴的某个部分。例如你要做一个循环循环的时间轴,可以在最后一个时刻添加一个动作回到0时刻。你也可以用来等待某个动作的发生。添加一个检测动作,如果为假,设置时刻位置为相对-1。

播放视频

这个动作你可以打开并播放一个视频文件。你要定义要打开的文件名和是否全屏或窗口模式。但要确定视频文件是存在的。你可以将它包含到游戏里或者放到一个数据文件里用来调用。

从文件替换精灵图象

这动作可以用于用指定图象文件替换精灵图象。你要定义要被替换的精灵图象,文件名(格式为bmp,jpg或者是gif)而且还有桢数(当你加载bmp或者jpg文件的时候)。对于gif文件来说说,桢数是按照gif文件的图象个数来自动调整的。精灵图象的其他设置是不会改变的,例如是否透明。你可以用这个动作来避

本文来源:https://www.bwwdw.com/article/haxv.html

Top