全新的游戏制造者和编码,试图教自己通过以下教程和什么不是gml。无论如何,我遵循了一个平台敌人AI教程;当你击中敌人的物体,而不是在它之上,游戏将重新启动。我把这个变成了玩家失去10点生命值的行,因为我想在我的游戏中添加一个健康系统。然而,当玩家与敌人接触时,当碰撞不断地滴答作响时,玩家失去了所有的生命。无论如何,我想知道如何在每一次碰撞之间增加几秒钟,玩家是无懈可击的?下面是我正在使用的碰撞事件代码,谢谢您:
if (y < other.y-vspd) {
with (other) {
instance_destroy();
}
vspd = -jspd;
} else {
global.playerhealth -= 10;
}
发布于 2016-05-17 18:43:23
为播放机的create事件创建一个布尔值,如invulnerable
,并将其设置为false
。然后,在player的step事件中添加以下代码:
if (invulnerable){
if (time < frames * seconds){
time++;
} else{
invulnerable = false;
}
}
将frames
更改为每秒帧/游戏启动的room_speed
(defualt为30)。
将seconds
更改为您希望玩家不可更改的秒数。
然后,您可以更改必须更改的代码:
if (y < other.y-vspd) {
with (other) {
instance_destroy();
}
vspd = -jspd;
} else if (!invulnerable) {
global.playerhealth -= 10;
invulnerable = true;
}
发布于 2016-05-17 01:00:06
创建一个名为canTakeDamage
的布尔变量(真或假),每次对玩家造成伤害时都会检查该变量。然后创建一个告警,在一定时间后将创建的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
}
}
https://stackoverflow.com/questions/37265360
复制相似问题