在GameMaker中创建你自己的小行星版本。
我们将通过三个简单的步骤构建此游戏:
对飞船进行编程以移动
让太空岩石爆炸
完成游戏
如何创建新项目打开游戏制作器。您将看到一个“新建”按钮-单击它。
在这里,您可以从空白项目开始,也可以选择一个模板。
对于这个游戏,让我们使用“太空岩石”模板。这为您提供了本教程的所有图像。
输入“项目名称”,然后点击“LetsGo!
您现在正在您的项目中!右侧的资产浏览器包含您的所有资产。现在,您将看到四个精灵,这是您可以在游戏中使用的图像。
有“spr_player”,你将驾驶的船,“spr_bullet”,你将从你的船上发射,还有两块岩石,你将摧毁它。
如何使用资产浏览器在同一个资产浏览器中,我们要创建一些对象。对象是你如何使图像栩栩如生,通过编程来移动、拍摄或做任何你需要它的事情。
你的船,岩石,甚至你发射的子弹都是作为物体创建的。我们将它们放在资产浏览器的“对象”组中,该组当前为空。
创建新对象将其重命名为obj_player
右键单击“对象”组,然后选择“创建-对象”。将其名称从“Object1”更改为“obj_player”。
按F2重命名所选对象,或右键单击它并选择“重命名”。
如何编辑对象您的新对象具有编辑器。在这里,您可以更改其属性并对其进行编程,我们将很快执行此操作。
每个对象都需要一个精灵——否则你会怎么看?
单击显示“无精灵”的位置,然后从“精灵”组下选择spr_player。
我们现在需要更多的对象。就像您创建obj_player一样,再创建三个对象:
obj_bullet:这是你的飞船发射的子弹。将角色设置为spr_bullet。
obj_rock:这是你要摧毁的岩石。将精灵设置为spr_rock_big,因为每块石头都会开始变大,并在您射击时缩小。
obj_game:这是一个“静默”对象,用于管理您的游戏。它不需要精灵。
这些都是你需要的物品!现在让我们将它们放在一个关卡中。
如何在GAMEMAKER中制作关卡GameMaker中的每个“关卡”都是一个房间资产。查看资产浏览器-已经有一个适合您:
双击它。“房间编辑器”将打开,您将在其中构建您的关卡。
在做任何事情之前,我想调整房间的大小,使其成为x的正方形。
如何在游戏制作中调整房间大小查看窗口的左下角-您将看到一个“检查器”窗口。
在这里,将房间的宽度和高度设置为。您可以使用其他大小。
如果您没有看到这些选项,请进入资产浏览器并单击Room1。选择房间时,它们应该是可见的。
如何在房间中放置对象查看房间编辑器中的左侧面板:默认情况下创建了两个图层,“实例”和“背景”。
实例:这是一个实例层。你的物品放在这里,就像麦片放进碗里一样。
背景:这是一个背景层。更改背景颜色或应用图像。
单击“实例”层以将其选中-这是您的对象将要去的地方:
在资源浏览器中,拖动obj_player并将其放置在房间中。
你的玩家飞船现在在房间里,作为一个“实例”——你可以在房间里放置任何物体的多个“实例”!
对岩石执行此操作-多次将obj_rock拖入房间,直到您有大约六个实例:
舞台是为戏剧搭建的。我们只需要教演员他们的角色。
如何移动船如果您现在运行游戏(按F5或顶部的“播放”按钮),您的游戏将打开,但它在晚上会像冰冻的湖一样静止。
你的物体在那里,你的房间在那里,但没有任何东西被编程来移动或做任何事情。
让我们努力吧。
如何在游戏制作中使用事件按下“向上箭头”键时,我们想推动玩家飞船向前移动。
在资产浏览器中,双击obj_player。
查看其对象编辑器-特别是“事件”窗口。
单击“添加事件”,然后选择“步骤”。
系统可能会要求您在GML代码和GML视觉对象之间进行选择。
如果您以前做过编程,请选择GMLCode,如果您是新手,请选择GMLVisual。
本教程将涵盖这两个选项,因此您可以选择您喜欢的任何选项。
做出选择,并启用“不要再要求此项目”。什么是步骤事件?做出上述选择后,您将看到Step事件的窗口打开。
步骤事件的GML代码窗口
一个对象有许多事件。每个事件都有自己独特的运行时间。
例如,你早上刷牙。然后你几乎整天都在呼吸,每一秒。
如果你是一个GameMaker对象,你会在“创建”事件中刷牙,在“步骤”事件中呼吸。
这是因为“Create”事件是为实例运行的第一个事件,并且它只运行一次。然后,当实例存在时,“Step”事件在每一帧中始终运行。
我们将对这个“步骤”事件进行编程以移动飞船,因为这是必须发生的连续事情,类似于呼吸。
如何对事件进行编程很快,我将向您展示一些要添加到“步骤”事件中的内容。添加它们的方式在GML代码和GML视觉中有所不同。
如果您使用的是GML视觉对象,请在工具箱中搜索相关操作,并将其拖到事件区域中:
搜索操作,然后将其拖到事件区域中。
如果您使用的是GML代码,只需将代码写入事件窗口即可。
如何添加动作好的,所以,我们需要移动船。
如果您按住向上箭头键,则会向实例添加运动,使其沿特定方向移动。
在GML视觉对象中,第二个操作“附加”到第一个操作。仅当第一个操作的条件为true时,第二个操作才会运行。要将“添加动作”附加到“如果按下键”,请将其放在条件操作的右边缘,如上所示。您只能将操作附加到绿色的“条件”操作。所以-我们正在增加一个方向的运动。那是什么方向?
该方向是实例的“image_angle”,即船舶面向的位置。
我们添加的运动量是0.1。您可以更改此设置以使您的飞船更快或更慢。
好了,现在怎么办?运行游戏(按F5,或点击顶部的“播放”按钮),然后在游戏中按向上箭头键。
船还活着!它向右移动,因为这是实例的默认角度。
不过它没有转弯...
如何轮换实例为了移动飞船,我们正在向“image_angle”添加运动。此变量存储实例旋转的角度。
要轮换实例,您只需更改此变量。
在同一个“步骤”事件中,添加以下内容:
ifkeyboard_check(vk_left){image_angle+=4;}ifkeyboard_check(vk_right){image_angle-=4;}
这里的逻辑很简单:
如果按住左箭头键,则从image_angle中减去4
如果按住向右箭头键,则image_angle中添加4
运行游戏,您现在可以移动和转弯了!
这很好,但有一个小问题。
如果你的船离开了房间,它就会永远消失。
为了解决这个问题,我们将让飞船“缠绕”在房间周围:如果它从顶部离开,它就会从底部回来。
如何在GAMEMAKER中包装实例在同一个“步骤”事件中,添加以下内容:
move_wrap(true,true,0)
确保在任何条件之外添加它。
这告诉飞船在外面时绕着房间转。水平和垂直环绕均已启用,换行边距设置为0。
包装边距控制实例在包装之前必须离开房间多远。我们现在不使用它,但它稍后会派上用场。
啊,船的运动完成了!您现在可以在房间内移动、转动和环绕。
[1飞船移动??/2摧毁岩石/3完成游戏]
这离我们的清单只有一步之遥。到岩石上:我们来了!
如何在游戏制作中射击之前我们创建了一个名为obj_bullet的对象。为了拍摄,我们将在飞船的位置创建此对象的新实例。
子弹将以与船本身相同的方向快速移动。
当子弹在房间外时,我们会摧毁它。这可以防止内存泄漏,如果您射击的所有子弹都永远存在,就会发生内存泄漏。
如何创建实例在obj_player的步骤事件中,添加以下内容:
ifmouse_check_button_pressed(mb_left){instance_create_layer(x,y,"Instances",obj_bullet)}
这将检查鼠标左键是否被“按下”。这与检查它是否被“按住”不同,因为这只会检查您是否刚刚点击了按钮。
如果按下鼠标左键,它将创建obj_bullet的实例。除了要创建的对象之外,它还需要其他三个参数:
x:将在其中创建实例的x(水平)位置
y:将在其中创建实例的y(垂直)位置
layer:将在其中创建实例的房间层
对于x和y,我们传入玩家的x和y变量,因此项目符号是在同一位置创建的。我们将层设置为“实例”。
你现在可以开枪了!事情是...子弹根本不动。
如何不断移动实例对于子弹,我们将在创建子弹后设置其速度。在那之后,它将继续永远移动,直到它在房间外。
双击obj_bullet。在“事件”窗口中,添加“创建”事件。
此事件是第一个在实例中运行的事件,并且只运行一次。这就是为什么它被称为“创建”,因为它在创建实例后立即运行。
在这种情况下,请添加以下内容:
speed=10;direction=obj_player.image_angle;
我们告诉子弹以10的速度移动——即每帧10像素。更改此设置以使子弹走得更快或更慢。
这就是你的子弹移动的速度,但它会移动到哪里?
这就是方向控制的东西。我们将其设置为obj_player.image_angle-这意味着我们从obj_player中拉出image_angle-告诉子弹移动到玩家面对的位置。
如何在GAMEMAKER中销毁实例我们的子弹现在应该在移动,但正如我之前所说,它们在离开房间时应该被摧毁。
在“事件”窗口中,单击“添加事件”。将鼠标悬停在“其他”上,然后选择“房间外”。
此事件在实例退出会议室区域后立即运行。在此处添加以下内容:
instance_destroy();
我认为这解释了自己...在这里,实例被销毁,因此它不再存在于房间中。
当然,对象本身会继续存在于资产浏览器中,并且可以随时从中创建新实例。
呜呼!我们现在可以拍摄了。
不过,看起来岩石并不在乎。
他们最好跑。
如何向随机方向移动所有的岩石都应该朝随机方向移动,但速度很慢,所以它们并不难捕捉。
双击obj_rock。添加Create事件,并在此处添加以下内容:
speed=1;direction=random();image_angle=random();
首先,我们将速度设置为1。与子弹的速度10相比,这是非常低的,这是预期的。
然后我们将方向设置为random()。这可以是0到(一个完整的圆)之间的任何随机数。
这设置了岩石移动的方向,但不会旋转精灵——所以我们也应用了一个随机数来image_angle。
岩石现在正在移动!但有两个问题:
如果一块石头掉到房间外面,它就会丢失,再也不会回来了
岩石看起来非常安静和无聊
岩石包装在同一个obj_rock对象中,添加Step事件。
我们启用岩石的包装,边距为。这意味着一块石头只有在房间外超过像素时才会环绕。
如果您使用边距0,您会看到岩石在屏幕上从一个点跳到另一个点,但现在它在屏幕外这样做。
最后,我们在image_angle上加1,因此岩石继续不断旋转。它只是看起来更逼真。
现在,岩石也环绕着房间,它们旋转,给游戏带来更太空的感觉。
#百家新收益#