全新的游戏制作者和编码,试图通过以下教程自学gml而不是。无论如何,我跟着一个平台游戏敌人AI教程;当你击中敌人并且不在其上方时,游戏将重新启动。我将此更改为玩家失去10点生命值的行,因为我想在我的游戏中添加一个健康系统。然而,当玩家与敌人接触时,玩家会因为碰撞不断滴答而失去所有健康。无论如何,我想知道如何在玩家无懈可击的每次碰撞之间添加几秒钟?先感谢您 以下是我使用的碰撞事件代码:
if (y < other.y-vspd) {
with (other) {
instance_destroy();
}
vspd = -jspd;
} else {
global.playerhealth -= 10;
}
答案 0 :(得分:0)
创建一个名为canTakeDamage
的布尔变量(true或false)变量,每次对玩家造成伤害时都会检查该变量。然后创建一个alarm,在一定时间后将创建的canTakeDamage
设置为true。
当播放器损坏时,将canTakeDamage
设置为false并执行警报。实现变量看起来像这样:
if (y < other.y-vspd) {
with (other) {
instance_destroy();
vspd = -jspd;
} else {
if (canTakeDamage) {
global.playerhealth -= 10;
alarm[0] = 200 // alarm[n] where n = alarm event you created
}
}
答案 1 :(得分:0)
为玩家的创建事件制作一个布局,例如invulnerable
,并将其设置为false
。然后,在播放器的步骤事件中添加此代码:
if (invulnerable){
if (time < frames * seconds){
time++;
} else{
invulnerable = false;
}
}
将frames
更改为您的游戏所在的每秒帧数/ room_speed
(默认值为30)。
将seconds
更改为您希望玩家无懈可击的秒数。
然后你可以改变你所拥有的代码:
if (y < other.y-vspd) {
with (other) {
instance_destroy();
}
vspd = -jspd;
} else if (!invulnerable) {
global.playerhealth -= 10;
invulnerable = true;
}