You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot 3.5中Area2D生成道具后位置被重置为(0,0)求助

Godot 3.5道具生成位置被重置为(0,0)问题求助

我在GodotEngine QA提交了该问题,但20小时后仍未通过审核,因此来这里求助!

我曾发布过一款游戏,计时器结束后会创建随机敌人实例并添加到场景中,实现流程如下:

  • 每次加载关卡时在ready()中执行RANDOMIZE()
  • 获取名为"it_spawn"组中的节点
  • 从中随机选取一个Area2D节点
  • 获取该Area2D的CollisionShape位置及其extents属性
  • 根据CollisionShape的extents生成随机X、Y位置
  • 设置位置后将实例添加到名为"ItemsSpawned"的Node2D节点下

实现代码:

var spawn_boxes = get_tree().get_nodes_in_group("it_spawn")
var random_spawn_area = spawn_boxes[randi() % spawn_boxes.size()]
var random_spawn_holster = random_spawn_area
var random_spawn_node = random_spawn_area.get_node("SPAWNER")

var random_area_center = random_spawn_holster.position
var random_area_edges = random_spawn_node.shape.extents
var random_area_width = random_area_edges.x
var random_area_height = random_area_edges.y

var random_x_high = random_area_center.x + random_area_width
var random_x_low = random_area_center.x - random_area_width
var random_y_high = random_area_center.y + random_area_height
var random_y_low = random_area_center.y - random_area_height

spawn_item.position.x = rand_range(random_x_high, random_x_low)
spawn_item.position.y = rand_range(random_y_low, random_y_high)

#spawn_item.add_to_group("spawned_items")
get_node("ItemsSpawned").add_child(spawn_item)

这段代码在我已发布的另一款游戏中完美实现了相同的道具生成功能,且敌人生成用的是完全相同的代码,100%正常工作。

但在使用同一Godot 3.5稳定版的新游戏中,每次生成道具时,设置的随机位置都会被重置为(0,0),道具每次都出现在完全相同的位置。敌人则正常随机生成在各处,只有道具的全局位置固定不变。

添加到场景树前打印的随机位置:

Random Set Position: -299.876, -11.543

添加到场景树后位置被重置:

Random Set Position: 0, 0
Global Position: 516, 78 <-- 非精确数值,但每次都大致在此范围

我已经研究了几天,开发因此停滞,完全找不到解决办法。再次强调,这段代码在同一Godot 3.5稳定版的已发布游戏中100%有效,移植时仅修改了变量名称。

更新
经过今早更多检查和调整场景与节点的加载方式后,问题仍然存在。以下是道具生成前的随机坐标,以及添加到树后的位置(每个条目对应不同的随机道具,可通过Area2D名称和添加到树后的不同精灵区分):

Set Position: (155.005737, -191.537476)
Added Position: (0, 0)

Set Position: (76.335258, 356.229767)
Added Position: (0, 0)

Set Position: (106.081261, 126.82753)
Added Position: (0, 0)

Set Position: (-310.06958, -194.428818)
Added Position: (0, 0)

Set Position: (132.235092, -145.846939)
Added Position: (0, 0)

Set Position: (13.039706, 332.876984)
Added Position: (0, 0)

内容的提问来源于stack exchange,提问作者fangb0n3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:15:31