问题标签 [gdscript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1623 浏览

godot - Godot:如何识别内置类型的类型?

在 GDScript 中,is关键字可以用来检查一个值是否是一个类型的实例:

但是对于像字符串这样的原始“内置”类型,你不能这样做:

这给了我一个“解析器错误:放错位置的表达式,放错位置:内置类型”

那么如何检查输入是否为字符串?

0 投票
1 回答
291 浏览

lag - 敌人在屏幕上时停止移动,但会在屏幕外起作用

在 godot 3.0 中,我设置了一个平台游戏。我意识到延迟存在问题,所以我设计了它,以便在离开屏幕左侧后将其销毁。在大多数情况下,敌人会起作用。除了最后一个,他会发射弹丸直到它出现在屏幕上,然后它就完全静止了。玩家可以将它们推来推去,但它不会做任何事情。当所有敌人、方块等落到左侧或底部太远时(游戏向右移动),它们都有方法 queue_free()。

很抱歉,我无法获得问题的视频,我的计算机无法同时运行屏幕录制软件和游戏,而游戏太慢而无法使用。

如果敌人靠近中心开始,因此更早遇到,它会起作用。我曾尝试让项目在它们落到左侧或屏幕下方后自行删除,这解决了第 1 级的相同问题,但没有解决第 2 级的问题。

如果玩家足够近并且穿过光线投射并且他们不会倒下,那么敌人应该向玩家移动。然后他们应该投掷他们的弹丸。

最终发生的情况是,当玩家穿过光线投射时,它们确实会投掷弹丸,但只会在敌人出现在屏幕上之前。这仅适用于玩家在关卡下大约一分钟遇到的敌人,在此之前敌人将按预期运行。

0 投票
2 回答
1214 浏览

sprite - 如何让 2D 精灵减速停止?

我正在尝试使用 GDScript 在 Godot 中创建一个可播放的精灵。我让我的角色左右移动,然后在没有输入时停止。

但是,我希望精灵放慢速度,而不是完全停止。我该怎么写?

0 投票
1 回答
162 浏览

path-finding - 如何阻止 AStar 改变方向

我可以让内置程序选择方向变化最少AStar的最短路径吗?

我目前像这样构建我的图表:

似乎您只能对点进行加权,而不是边缘,所以我不确定如何选择一个方向而不是另一个方向。它选择的路径似乎总是最大化方向变化:

锯齿状路径

0 投票
1 回答
779 浏览

godot - 如何编写控制跳跃并创建双跳动作的代码?

* 下面的代码是我尝试计算跳跃的地方,以防止它们超过两次跳跃。我的目标是创建一个双跳,因此我使用小于运算符来控制该数字* if jump_pressed: if jump_count < 2: jump_count += 1 jump() grounded = false <-- 我不得不再次复制粘贴此代码,下面,所以我的问题没有错误。

0 投票
1 回答
518 浏览

android - 重叠碰撞区域无法触发触摸事件

我在使用 Godot 3.0 的 Android 项目中为我的游戏提供了一个“虚拟”左键和右键。当用户按下/触摸左或右按钮时,它将控制主角向左或向右移动。这是右键的脚本。

这是右键的节点结构:

我也有一些敌人在现场随机生成。他们总是向左移动,这是敌人的脚本

这是敌人的节点:

大多数情况下,按钮都有效。但是,当敌人移动到右键后面时,右键不会发出 input_event 信号。(我将 input_event 信号与 _on_RightButton_input_event 连接。)我不确定是因为重叠的 CollisionShape2D 还是其他一些问题。请帮忙。欢迎任何建议。谢谢!

0 投票
2 回答
153 浏览

game-physics - 如果精灵与鼠标位于同一位置,则停止精灵的移动

我试图让精灵在它xy鼠标相同时停止移动。

出于某种原因,一旦图像与鼠标位于同一位置,图像就会开始在同一轴上来回快速移动。我需要让它停止移动。

0 投票
1 回答
345 浏览

godot - 我的问题是关于 GDscript 中的代码(godot 引擎中的语言编程)

sprite(攻击)在以下情况下不起作用:

但如果:

它的工作!!!!

请问解决代码是什么?!!因为我想一键点击键盘来工作精灵......

0 投票
1 回答
1094 浏览

arrays - 如何将 2 个相等长度的数组合并到一个带有键的字典中:Godot 中的值对?

我一直在尝试在 Godot 中随机化有序数组(例如:[0,1,2,3])中的值。应该有一个数组的 shuffle() 方法,但它似乎被破坏并且总是返回“null”。我找到了一种使用 Fisher-Yates shuffle 的解决方法,但是生成的数组被引擎认为是“未排序的”,因此当我尝试使用 bsearch() 等方法通过它的位置查找值时,结果是充其量是不可靠的。

我的解决方案是创建一个字典,由一个包含我获得的随机值的数组组成,并与第二个长度相等的数组与(排序的)数字(按数字顺序)合并,然后我可以将其用作访问特定数组位置的键需要的时候。

问题变得简单...

在 GDScript 中,您将如何获取 2 个数组。例如:ARRAY1 = [0,1,2,3] ARRAY2 = [a,b,c,d]

..并合并它们以形成一个如下所示的字典: MergedDictionary = {0:a, 1:b, 2:c, 3:d}

任何帮助将不胜感激。

Godot 不支持像 Python 那样合并数组的“zip”方法,所以我只能手动合并它们。然而......尽管我进行了数小时的搜索,但几乎没有关于如何在 GDScript 中执行此操作的文档。

0 投票
2 回答
1911 浏览

random - 需要解决 rand_range 只提供浮点数而不是整数 - GDScript

对于一个项目,我需要使用随机数生成器来提供随机数作为 Fisher-Yates Shuffle 的一部分。我同时使用randomize()randi()%1+50方法来获取我的随机数。

然而,这样做不会让我的 Fisher-Yates 洗牌器倒计时到n=0,因为如果这样做,它会抛出一个错误:

运算符中除以零 %

指向 % 所在的发电机范围。但是,我可以通过使用来解决这个问题rand_range(),因为rand_range()返回的是浮点数而不是整数,我不得不对结果进行四舍五入,这有时会导致重复的数字,这是我无法拥有的。

ceil()并且floor()出于同样的原因也是不可能的。当然,如果GDScript包含类似的东西,这一切都可以解决,randi_range()但我在其他论坛上看到这自 2014 年以来一直是一个问题,并且仍然没有解决方案。

问:鉴于这不是一个选项,有没有人知道一种方法来返回一个范围内的随机数,该范围内不包括 0 并且是一个不需要 % 运算符来指示范围的正整数?

不要误会我的意思,我喜欢 Godot 引擎,并欣赏它的本质,但有时代码需要太多的“摔跤”才能让我的精神健全来处理。

任何帮助将不胜感激。提前致谢...