【问题标题】:Godot calling game over function twiceGodot 两次调用游戏结束函数
【发布时间】:2020-01-09 18:34:43
【问题描述】:

所以我有一个带有 area_2d 敌人的节点。当玩家击中任何敌人时,on_enemy_area_entered 信号会调用游戏结束函数,该函数将在该游戏实例期间收集的硬币添加到全局硬币变量并保存。漂亮又漂亮……除非玩家同时击中两者。发生这种情况时,信号会调用game_over 函数两次,因此玩家会在主菜单中看到他真实分数的两倍....由于游戏类型,我无法阻止玩家击中两个敌人同一时间

我能做什么

【问题讨论】:

  • 简而言之,让负责game_over() 的对象有一个名为has_game_ended 之类的布尔变量。在game_over() 的顶部检查has_game_ended。如果是truegame_over() 返回。
  • 当玩家被击中时,禁用碰撞器(也可以断开信号)并“杀死”玩家,然后初始化一个新的玩家场景

标签: godot


【解决方案1】:

也许你应该尝试这样的事情:

var is_game_over = false

func game_over():
    if not is_game_over:
        # your code to add coins etc.
        is_game_over = true

首先,game_over() 会检查游戏是否已经结束(is_game_over 变量),如果是真的,它会完成这项工作,最后它将is_game_over 变量设置为true 知道那场比赛已经结束了;并且当你的玩家击中第二个敌人时,game_over() 函数会知道游戏已经结束,不会再次添加硬币。

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多