在GameMaker:Studio 2里,时间控件又叫闹铃。它是一个变量接受一个倒计值,开始倒数直到0,再触发相关事件,执行相关代码。其实闹铃不是计时的,而是计帧数的。你设置的变量值是让它等待多少帧,当有指定帧数被渲染之后,相关代码就开始执行。
计帧数而不是计秒数,这个该怎么理解呢?我们是在开发一款游戏,它是要运行在一定帧数上的。英文叫FPS,每秒帧数决定了游戏的流畅度。纸牌游戏设置的是60帧每秒,这意味着如果要等待1秒,就相当于等待60帧。公式如下
要等待的时间=游戏每秒帧数X秒数
闹铃,在GameMaker里还是一个数组。每个元素代码一个闹铃。可以同时设置12个给一个实例。当变量值为-1时,它是停止的,大于0时,它将会开始倒数计时。
闹铃的代码设置如下:
alarm[0] = 60;
这个表示会等待1秒钟,倒计时结束后要执行的代码要写到事件里去,先添加事件,选择Alarm0,如图
在纸牌游戏,我们设置为0.5秒。这样当玩家点第二张牌时,翻转后会等待0.5秒,再检查。让我们有时间观察牌面,进行记忆。
修改obj_card里的左键单击事件,改这如下的样子:
if(face==0) face=1; else face=0; if(visible and global.game_state==states.wait) { face=1; if(global.cards[0]==noone) { global.cards[0]=self; } else { global.cards[1]=self; if(global.cards[0].index==global.cards[1].index) { face=0; global.cards[0]=noone; global.cards[1]=noone; } else { global.game_state=states.playing; alarm[0]=0.5*room_speed;////// } } }
我们把检查的代码移到了闹铃事件里,添加0号闹铃。并填入代码到它里面
if(global.cards[0].type==global.cards[1].type) { global.cards[0].visible=false; global.cards[1].visible=false; } global.cards[0].face=0; global.cards[1].face=0; global.cards[0]=noone; global.cards[1]=noone; global.game_state=states.wait;
运行游戏,按回车键,加载纸牌,当我们点击第二张时,会有0.5秒的显示时间,然后再消失,或者翻转到背面。游戏终于有点变得好玩了。
但是这还不够,因为玩游戏有胜就有败。下一章,讲如何设置获胜条件和失败条件。
暂无关于此日志的评论。