【问题标题】:How to use Doors to load levels in godot 3d如何使用 Doors 在 godot 3d 中加载关卡
【发布时间】:2022-08-03 13:17:35
【问题描述】:

刚开始玩 Godot,我正试图找出在我的游戏中处理关卡切换的最佳方法。

游戏世界分为 3 个不同的关卡:

  1. 外部
  2. 1 层内
  3. 2 层内

    外层和内层 1 相连,内层 1 和层 2 相连

    我需要一种方法来制作它,以便当玩家与门对象交互时,游戏会加载必要的关卡并在正确的生成点生成玩家。 所以当玩家从Inside Level 1 到Outside 时,他们需要在Outside Level 中的门对象的正前方生成,而不是Outside 的默认生成位置。当玩家从 Inside Level 2 回到 Inside Level 1 时也是如此。

    我刚刚了解了单例/自动加载,所以我认为我需要设置某种级别管理器,但我不确定如何设置。我也不知道如何将玩家的变换设置为与生成点相同。

    标签: 3d godot


    【解决方案1】:

    是的,使用自动加载。

    我们真的可以过度设计这个。正如您将在下面看到的,有许多变化。但是您需要遵循一系列步骤。为了不让这个答案变得臃肿,我将笼统地介绍它们。

    这就是你要做的:

    • 在场景中为每扇门添加Position3D。这个Position3D 将是玩家角色从相应门进入时放置的位置。并给Position3D 一个名称,您可以从门的名称中找出它。
    • 将玩家与之交互的门存储在自动加载中的变量中。这就是我们将用来在新场景中找到Position3D 的内容。门中的代码要么调用自动加载的方法,要么直接设置变量。
    • 通过您喜欢的任何方式更改场景(可以来自门中的代码,或自动加载中的方法 - 可以使用场景树方法或手动 - 您可以加载、预加载或以交互方式加载新的场景)。交互式加载避免在加载过程中冻结游戏。这允许您有一个动画来隐藏加载时间。
    • 在新场景加载、实例化并在场景树中... 获取对应的Position3D 与自动加载中存储的值(如果有的话)。
    • 现在您要将玩家角色放置在您找到的Position3D。如果您将玩家角色作为场景的一部分,这可能意味着移动它。或者自动加载中的方法在正确的位置生成角色。或者您甚至可以从旧场景中移除玩家角色,将其存储在自动加载中,然后在新场景准备好后,将其添加到其中。事实上,可以将玩家角色本身设置为自动加载。无论您如何获得对角色玩家的引用,您都将确保其global_transform 设置为您找到的Position3Dglobal_transform(如果有的话)。如果没有,则将(或让)玩家角色置于默认位置。

    【讨论】:

    • 嘿,谢谢你的回复!所以到目前为止我已经得到了: 1. 用于存储与玩家相关的变量(健康、生成点等)的全局单例脚本 2. 用于存储游戏中可以在其他地方发出的所有信号的事件单例脚本 3.将玩家作为子项加载的主场景,以及将关卡作为自身子项加载的空间节点但是,当我尝试将生成点信息传递给玩家时,Godot 给了我“错误设置属性‘global_transform’值为 Nil 类型
    • 在游戏开始时,每当玩家与门交互时,都会向主场景中的 current_level 空间节点发出一个信号,以获取名为“Start”的 position3D 节点的引用,并将 Global.playerspawn 变量设置为位置 3D 的 global_transform。
    • ` func playerSetup(): #游戏开始时调用一次,每次加载新关卡 global_transform = Global.playerSpawn health = Global.currentHP currentAmmo = Global.currentClip totalAmmo = Global.currentAmmo `
    • @zwan9“Nil 类型”告诉您,您尝试访问的变量已按字面意思设置为 null,也许您设置该变量的位置也可以拉取您需要的 Transform。知道自动加载是按顺序加载的。此外,也许使用is_instance_valid 是检查的正确调用(而不是== null),因为它还会检查您是否有对已释放对象的引用。
    猜你喜欢
    • 2021-11-14
    • 2022-12-11
    • 2020-09-28
    • 2019-04-21
    • 2020-10-10
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多