问题标签 [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.
godot - Godot:如何识别内置类型的类型?
在 GDScript 中,is
关键字可以用来检查一个值是否是一个类型的实例:
但是对于像字符串这样的原始“内置”类型,你不能这样做:
这给了我一个“解析器错误:放错位置的表达式,放错位置:内置类型”
那么如何检查输入是否为字符串?
lag - 敌人在屏幕上时停止移动,但会在屏幕外起作用
在 godot 3.0 中,我设置了一个平台游戏。我意识到延迟存在问题,所以我设计了它,以便在离开屏幕左侧后将其销毁。在大多数情况下,敌人会起作用。除了最后一个,他会发射弹丸直到它出现在屏幕上,然后它就完全静止了。玩家可以将它们推来推去,但它不会做任何事情。当所有敌人、方块等落到左侧或底部太远时(游戏向右移动),它们都有方法 queue_free()。
很抱歉,我无法获得问题的视频,我的计算机无法同时运行屏幕录制软件和游戏,而游戏太慢而无法使用。
如果敌人靠近中心开始,因此更早遇到,它会起作用。我曾尝试让项目在它们落到左侧或屏幕下方后自行删除,这解决了第 1 级的相同问题,但没有解决第 2 级的问题。
如果玩家足够近并且穿过光线投射并且他们不会倒下,那么敌人应该向玩家移动。然后他们应该投掷他们的弹丸。
最终发生的情况是,当玩家穿过光线投射时,它们确实会投掷弹丸,但只会在敌人出现在屏幕上之前。这仅适用于玩家在关卡下大约一分钟遇到的敌人,在此之前敌人将按预期运行。
sprite - 如何让 2D 精灵减速停止?
我正在尝试使用 GDScript 在 Godot 中创建一个可播放的精灵。我让我的角色左右移动,然后在没有输入时停止。
但是,我希望精灵放慢速度,而不是完全停止。我该怎么写?
path-finding - 如何阻止 AStar 改变方向
我可以让内置程序选择方向变化最少AStar
的最短路径吗?
我目前像这样构建我的图表:
似乎您只能对点进行加权,而不是边缘,所以我不确定如何选择一个方向而不是另一个方向。它选择的路径似乎总是最大化方向变化:
godot - 如何编写控制跳跃并创建双跳动作的代码?
* 下面的代码是我尝试计算跳跃的地方,以防止它们超过两次跳跃。我的目标是创建一个双跳,因此我使用小于运算符来控制该数字* if jump_pressed: if jump_count < 2: jump_count += 1 jump() grounded = false <-- 我不得不再次复制粘贴此代码,下面,所以我的问题没有错误。
android - 重叠碰撞区域无法触发触摸事件
我在使用 Godot 3.0 的 Android 项目中为我的游戏提供了一个“虚拟”左键和右键。当用户按下/触摸左或右按钮时,它将控制主角向左或向右移动。这是右键的脚本。
这是右键的节点结构:
我也有一些敌人在现场随机生成。他们总是向左移动,这是敌人的脚本
这是敌人的节点:
大多数情况下,按钮都有效。但是,当敌人移动到右键后面时,右键不会发出 input_event 信号。(我将 input_event 信号与 _on_RightButton_input_event 连接。)我不确定是因为重叠的 CollisionShape2D 还是其他一些问题。请帮忙。欢迎任何建议。谢谢!
game-physics - 如果精灵与鼠标位于同一位置,则停止精灵的移动
我试图让精灵在它x
与y
鼠标相同时停止移动。
出于某种原因,一旦图像与鼠标位于同一位置,图像就会开始在同一轴上来回快速移动。我需要让它停止移动。
godot - 我的问题是关于 GDscript 中的代码(godot 引擎中的语言编程)
sprite(攻击)在以下情况下不起作用:
但如果:
它的工作!!!!
请问解决代码是什么?!!因为我想一键点击键盘来工作精灵......
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 中执行此操作的文档。
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 引擎,并欣赏它的本质,但有时代码需要太多的“摔跤”才能让我的精神健全来处理。
任何帮助将不胜感激。提前致谢...