首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多个碰撞同时发生碰撞时只检测一个物体的碰撞

如何在多个碰撞同时发生碰撞时只检测一个物体的碰撞
EN

Stack Overflow用户
提问于 2022-10-22 15:19:10
回答 1查看 41关注 0票数 1

我正在制作2D平台僵尸射击游戏。我实现了僵尸敌人,可以抓取和持有玩家时,与玩家碰撞。一旦僵尸敌人与玩家相撞,僵尸敌人就会开始抓取状态,并播放抓取动画。另一方面,玩家在与僵尸敌人碰撞时,其精灵将是不可见的,移动和控制将被禁用。当玩家被僵尸抓住时,玩家可以通过按下按钮逃离僵尸。(GIF01)

当平台上只有一个敌人时,所有这些序列都能很好地工作。然而,当我复制僵尸敌人并产生其中几个时,就会出现问题。也就是说,当僵尸A和僵尸A(复制的A)完全同时与玩家碰撞时,它们都开始抓取状态。(GIF02)

我该如何避免这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-22 23:12:44

你需要设定敌人状态的改变取决于目前是否有可能抓取玩家。

在player脚本中,您可以给它一个类似于var can_be_grabbed = true的变量

在僵尸脚本中,我假设您有一个对player节点的引用。例如。

onready var player = get_node("path_to_player")

然后,僵尸状态将类似于:

代码语言:javascript
复制
match state:
    IDLE_STATE:
        if overlaps_body(player) and player.can_be_grabbed:
            player.can_be_grabbed = false
            state = GRAB_STATE
    
    GRAB_STATE:
        // Button smash code

        if button_smash_complete:
            player.can_be_grabbed = true
            // Destroy the zombie
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74164757

复制
相关文章

相似问题

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