首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏制造者--如何在碰撞之间增加一个不可抵挡的周期

游戏制造者--如何在碰撞之间增加一个不可抵挡的周期
EN

Stack Overflow用户
提问于 2016-05-17 00:43:52
回答 2查看 1.6K关注 0票数 0

全新的游戏制造者和编码,试图教自己通过以下教程和什么不是gml。无论如何,我遵循了一个平台敌人AI教程;当你击中敌人的物体,而不是在它之上,游戏将重新启动。我把这个变成了玩家失去10点生命值的行,因为我想在我的游戏中添加一个健康系统。然而,当玩家与敌人接触时,当碰撞不断地滴答作响时,玩家失去了所有的生命。无论如何,我想知道如何在每一次碰撞之间增加几秒钟,玩家是无懈可击的?下面是我正在使用的碰撞事件代码,谢谢您:

代码语言:javascript
运行
复制
if (y < other.y-vspd) {
with (other) {
instance_destroy();
}
vspd = -jspd;
} else {
global.playerhealth -= 10;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-17 18:43:23

为播放机的create事件创建一个布尔值,如invulnerable,并将其设置为false。然后,在player的step事件中添加以下代码:

代码语言:javascript
运行
复制
if (invulnerable){
    if (time < frames * seconds){
        time++;
    } else{
        invulnerable = false;
    }
}

frames更改为每秒帧/游戏启动的room_speed (defualt为30)。

seconds更改为您希望玩家不可更改的秒数。

然后,您可以更改必须更改的代码:

代码语言:javascript
运行
复制
if (y < other.y-vspd) {
with (other) {
instance_destroy();
}
vspd = -jspd;
} else if (!invulnerable) {
global.playerhealth -= 10;
invulnerable = true;
}
票数 0
EN

Stack Overflow用户

发布于 2016-05-17 01:00:06

创建一个名为canTakeDamage的布尔变量(真或假),每次对玩家造成伤害时都会检查该变量。然后创建一个告警,在一定时间后将创建的canTakeDamage设置为true。

当播放机损坏时,将canTakeDamage设置为false并执行警报。实现该变量可以如下所示:

代码语言:javascript
运行
复制
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
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37265360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档