首页 > 解决方案 > 如何在 Godot 中定义全局变量?

问题描述

所以我一直在为一个项目编写平台游戏,需要编写一个敌人。

我想在玩家的位置相对于敌人的位置在一定范围内时让敌人攻击。

除了这个我稍后会修复的草率 AI 之外,我似乎无法找到一种方法来访问我用于播放器的 KinematicBody2D 节点的位置。

我尝试在 World 节点中创建一个变量,但它不会访问它。

这是我的场景树

任何建议,将不胜感激

标签: positionglobal-variablesgodotgdscript

解决方案


我建议您不要使用全局变量,而是Area2D在 Enemy 场景下添加一个表示玩家对敌人的探测范围的变量。然后在您的 Enemy 场景中,将area_enteredor body_entered(取决于您的设置)连接到您的 Enemy 脚本。它应该生成一个看起来像_on_area_entered(). 然后开始在那里编写 Enemy 攻击。

如果你真的想使用全局变量,那么另一种实现方式是创建单例/自动加载。为此,只需创建一个脚本(扩展任何节点)或一个场景。然后转到Project Settings>AutoLoad并浏览您制作的脚本/场景。最后,输入节点名称,然后按Add

这将使您的脚本成为可以在脚本中的任何位置访问的“变量”。在这里您可以开始为 Enemy 和 Player 交互编码。


推荐阅读