GMS2入门

Dev_log_1 前言及GML模式下实现人物移动

2021-02-01  本文已影响0人  想当狗策划

这系列文章是写给自己做笔记的初学者教程,GMS2的大佬们无需在此浪费时间。

希望自己能坚持下来,这是我为自己创作游戏demo所写下的一些笔记。

我对这个demo的初步想法是,把它做成一个,操作方式更接近Roguelike游戏的,但内容侧重于剧情叙事的游戏demo。不可避免的,我首先想到了使用Rpg Maker来完成这个过程。但是Rpg Maker这个软件的设计思路局使得它所实现的游戏局限在了回合制的框架中,即便真的用这个软件做出了ARPG(但这真的可能么)的游戏。(大概Action的要素需要被无限弱化吧)

得益于友人所助,我可以使用Game Maker Studio 2 来完成这个过程了。

制作游戏的第一步,当然是要让玩家操纵的角色动起来。我取巧地使用了Rpg Maker Mv的素材,他们的素材自带移动差分CG,比较好用。

这里我将我的人物动画素材导入了GMS2,并切片成了四片:


人物素材

切片的依据是人物的移动方向

新建一个Step事件,这里之所以不用Keyup,Keydown也是为了让我的事件显得不是那么的冗余。

按键替代

移动按键替代

到这里为止,我设想的操作模式是,使用键盘的WSAD来移动,使用鼠标进行瞄准与射击。考虑到我并没有美术的能力,我并不打算实现让玩家可以进行八个方向的位移(即wsad四键两两组合的四个方向不实现)

那么WSAD这样经典的位移按键组合对于右手要使用鼠标的玩家而言显然是友好得多的。

这里涉及了两个函数:
keyboard_set_map(key1,key2)
这里key1为替换用的按键,key2为被替换的按键。

ord("str")
ord在GML语言里和chr作用相反,前者将输入的字符由字母转换为ASCII码,后者反之。对于不存在于ASCII码表内的按键(譬如ctrl,alt),则GML文件里用一些vk_开头的常量来代表它们。

按键事件判断

接下来要让程序每帧检测玩家是否按下了按键:


检测向上位移

想象一个直角坐标系, xy的值即是目标精灵所在的坐标。不同于传统直角坐标系,12点方向是y轴正方向,在GML里Y轴的正负方向同传统的直角坐标系是相反的。

keyboard_check(key1)
顾名思义,检测某个按键是否被按下,倘若按下返回true,否则返回false。

前文我已经将w取代了vk_up这个按键,因此此处检测的是w键是否被按下。

if判断框内,按下w所发生的事件内容为:

y=y-4: //人物向六点钟方向位移
image_speed=0.5; //移动动画的播放速度为0.5
sprite_index=spr_player_up; //选取播放的移动动画

前面我将人物移动动画进行切片,切片为四个不同方向的移动动画,因此此处需要用sprite_index函数来决定播放哪一个切片。

给四个按键分别加上判断,即可实现人物的移动啦。最后在if事件框外建议补充一个image_speed=0;来初始化动画播放速度,除非你想在不按键的情况下看着角色在房间里犯多动症。

上一篇下一篇

猜你喜欢

热点阅读