position - 如何在 Godot 中定义全局变量?
问题描述
所以我一直在为一个项目编写平台游戏,需要编写一个敌人。
我想在玩家的位置相对于敌人的位置在一定范围内时让敌人攻击。
除了这个我稍后会修复的草率 AI 之外,我似乎无法找到一种方法来访问我用于播放器的 KinematicBody2D 节点的位置。
我尝试在 World 节点中创建一个变量,但它不会访问它。
任何建议,将不胜感激
解决方案
我建议您不要使用全局变量,而是Area2D
在 Enemy 场景下添加一个表示玩家对敌人的探测范围的变量。然后在您的 Enemy 场景中,将area_entered
or body_entered
(取决于您的设置)连接到您的 Enemy 脚本。它应该生成一个看起来像_on_area_entered()
. 然后开始在那里编写 Enemy 攻击。
如果你真的想使用全局变量,那么另一种实现方式是创建单例/自动加载。为此,只需创建一个脚本(扩展任何节点)或一个场景。然后转到Project Settings
>AutoLoad
并浏览您制作的脚本/场景。最后,输入节点名称,然后按Add
。
这将使您的脚本成为可以在脚本中的任何位置访问的“变量”。在这里您可以开始为 Enemy 和 Player 交互编码。
推荐阅读
- php - PHP中的eval()函数内的嵌套变量引用
- android - Flutter 插件无法在 Android 下运行
- swift - Swift - stopAnimating() - 只能在主线程中使用
- ios - 如何快速实施实时条纹苹果支付?Stripe 测试密钥工作正常但无法使用,我该如何解决?
- node.js - React js - 反应中的网络套接字链接代理问题
- javascript - 如何使用JavaScript从数组中删除字符后的数字和字母
- c++ - 使用循环展开加速 do-while 循环
- python - 根据规则操作列中的值
- node.js - 无法在 create-react-app 中运行 npm start
- flutter - SqfliteDatabaseException (DatabaseException(unrecognized token: "498a" (code 1): , while compile: DELETE FROM Products WHERE