我有一个问题,我正在坚持一个新的2D项目.我添加了一个精灵背景,当我运行测试时它没有显示任何问题.我在输入映射中将esc键设置为"key_exit".然后我创建了一个node2D作为根,并添加了以下脚本:
extends Node2D
func _ready():
if Input.is_action_pressed("key_exit"):
get_tree().quit()
Run Code Online (Sandbox Code Playgroud)
它不起作用.我正在尝试创建一个简单的循环,当我按下转义键时,它会监听esc键按下并退出.如果我在没有if条件的情况下添加get_tree().quit(),它会在启动后立即退出.如何让它"听"我的if条件?我在这做错了什么?
我知道可以通过数组 [2:4] 在 python 中对数组进行切片。我解决这个问题的方法是循环遍历我想要的索引并将它们附加到 new_list 中。这种方式需要更多的工作,是否有一种简单的方法可以像在 python 中一样做到这一点?
我正在用 GDscript 用 Godot 编写一个程序,旨在改变骨架中多个骨骼的位置。骨骼将按照我希望骨骼移动到的点减去骨骼当前位置计算出的值进行平移。translateValue = endPoint - currentPoint但是,所有值都必须位于世界坐标或全局位置中,代码才能正常工作。Godot 有多种方法来检索骨骼变换以访问位置,例如:skeleton.get_bone_pose() , skeleton.get_bone_global_pose , skeleton.get_bone_rest。我尝试使用skeleton.get_bone_global_pose ,但它没有给出全局位置,并且似乎仍然与某些东西相关。还有一个to_global()方法,但我不完全确定它的作用。有人可以解释这些方法之间的差异以及如何获得全球地位吗?谢谢!
我想知道如何创建一个脚本,其中包含我想在多个脚本中使用的方法。我不认为我想为它创建一个全局单例,因为我没有存储任何将在多个场景中保存的全局数据。我收集了一些有用的功能,别无他物。
我在 GDScript 中声明了一个像这样的枚举:
enum State = { STANDING, WALKING, RUNNING }
Run Code Online (Sandbox Code Playgroud)
我想获得此枚举的随机变体,而不提及它的所有变体,以便稍后可以向枚举添加更多变体,而无需更改负责获取随机变体的代码。
到目前为止,我已经尝试过:
State.get(randi() % State.size())
Run Code Online (Sandbox Code Playgroud)
和这个:
State[randi() % State.size()]
Run Code Online (Sandbox Code Playgroud)
都不起作用。前者给我 Null,后者给我错误“无效的获取索引 '2'(基于:'字典')”。
我该如何以实际有效的方式做到这一点?
我正在制作一个具有多个场景的游戏,并且需要具有 get_node(来自另一个场景的节点)的变量,并且我不知道如何从另一个场景获取节点。
所以我设置了 Q 和 E 来控制固定在 8 个方向的相机。问题是当我调用 Input.is_action_just_pressed() 时,它设置为 true 两次,因此它的内容执行两次。
这就是它对计数器所做的事情:
0 0 0 0 1 1 2 2 2 2
我该如何修复?
if Input.is_action_just_pressed("camera_right", true):
if cardinal_count < cardinal_index.size() - 1:
cardinal_count += 1
else:
cardinal_count = 0
emit_signal("cardinal_count_changed", cardinal_count)
Run Code Online (Sandbox Code Playgroud) 想象一下角色扮演游戏,您可能需要提供一系列按钮。用户可能会进入一个房间,他们必须从一系列选项(按钮)中进行选择。是否有一种容器/面板可以水平显示可点击的按钮,但如果需要的话可以换行?
我能想到的描述这种情况的最佳类比是,想象一下需要单击背包中的一个项目,但每个项目的宽度可能不同。(我可以使它们的高度相同,但宽度会有所不同)
.---[My Backpack]------.
| aaa bbb cccc ddd |
| ee fff g |
| |
| |
`----------------------'
Run Code Online (Sandbox Code Playgroud)
(选项来自数据库,因此在编译时未知一个房间中可能有多少选项,因此我需要以编程方式添加选项。)
这个 godot 文档的最底部介绍了自定义容器布局,但我不清楚这在实践中如何工作
我正在尝试在游戏中制作一个数字时钟,并且需要当前时间(小时和分钟),格式如下:HH:MM:SS我怎样才能获得所需的时间?
假设我有一个对象,并且在字符串中给定了一个类名,
如何检查该对象是否属于该类?
extends Node2D
func _ready():
var given_class_name="KinematicBody2D"
if($Obj is given_class_name):
...
Run Code Online (Sandbox Code Playgroud)