当你与骷髅碰撞时 运行 的游戏制作者死亡代码不能像它应该的那样工作
Game maker death codes which will run when you collide with a skeleton don't work like It should
p_hp 是健康变量,o_skeleton 是我们的敌人。我想做的是当玩家与骷髅碰撞3次时杀死玩家,但似乎行不通。
What did I do wrong?
p_hp=3;
if(place_meeting(x,y,o_skeleton))
{
p_hp=p_hp-1
}
if(place_meeting(x,y,o_skeleton)) && (p_hp==0)
{
instance_destroy(self);
}
请帮助解决我的问题。
p_hp = 3
是在Step Event中声明的吗?那么这意味着每次到达该代码时,p_hp
将重置回 3。并且每帧都会调用 Step Event。
我建议声明稍后在创建事件中更改的变量。
此外,最好用这个来检查你的角色是否还活着:
if (p_hp <= 0)
{
instance_destroy(self);
}
这样它就不需要碰撞来检查它是否还活着,如果碰巧p_hp
小于0。它仍然会被摧毁。
请记住,这可能会导致玩家立即死于骷髅,因为它会在每一帧检查 Step Event。在这种情况下,你需要考虑被击中后短暂的无敌时间。
增加无敌的方法有很多种,我使用的方法是增加无敌,就是制作一个invincibility
变量并将其用作计时器。在它被击中的那一刻给它一个值,并随着时间的推移让它 return 到 0。您还应该添加检查 invincibility
值是否高于 0;
所以,在实践中:
创建活动:
p_hp = 3;
invicibility = 0;
步骤事件:
if (invincibility > 0) //timer in step event
{
invincibility -= 1/room_speed // (1/room_speed) = real time seconds
}
if (place_meeting(x,y,o_skeleton) && invincibility <= 0) //avoids getting hit while invincibility has value.
{
p_hp -= 1;
invincibility = 0.5; //grants half a second of invincibility after getting hit
}
if (p_hp <= 0)
{
instance_destroy(self);
}
(额外提示:p_hp -= 1
与 p_hp = p_hp - 1
的作用相同)
p_hp 是健康变量,o_skeleton 是我们的敌人。我想做的是当玩家与骷髅碰撞3次时杀死玩家,但似乎行不通。
What did I do wrong?
p_hp=3;
if(place_meeting(x,y,o_skeleton))
{
p_hp=p_hp-1
}
if(place_meeting(x,y,o_skeleton)) && (p_hp==0)
{
instance_destroy(self);
}
请帮助解决我的问题。
p_hp = 3
是在Step Event中声明的吗?那么这意味着每次到达该代码时,p_hp
将重置回 3。并且每帧都会调用 Step Event。
我建议声明稍后在创建事件中更改的变量。
此外,最好用这个来检查你的角色是否还活着:
if (p_hp <= 0)
{
instance_destroy(self);
}
这样它就不需要碰撞来检查它是否还活着,如果碰巧p_hp
小于0。它仍然会被摧毁。
请记住,这可能会导致玩家立即死于骷髅,因为它会在每一帧检查 Step Event。在这种情况下,你需要考虑被击中后短暂的无敌时间。
增加无敌的方法有很多种,我使用的方法是增加无敌,就是制作一个invincibility
变量并将其用作计时器。在它被击中的那一刻给它一个值,并随着时间的推移让它 return 到 0。您还应该添加检查 invincibility
值是否高于 0;
所以,在实践中:
创建活动:
p_hp = 3;
invicibility = 0;
步骤事件:
if (invincibility > 0) //timer in step event
{
invincibility -= 1/room_speed // (1/room_speed) = real time seconds
}
if (place_meeting(x,y,o_skeleton) && invincibility <= 0) //avoids getting hit while invincibility has value.
{
p_hp -= 1;
invincibility = 0.5; //grants half a second of invincibility after getting hit
}
if (p_hp <= 0)
{
instance_destroy(self);
}
(额外提示:p_hp -= 1
与 p_hp = p_hp - 1
的作用相同)