我正在制作《Godot》的2D平台游戏,我用下面的代码创建了一个对象:
if currentPlayers < playerLimit:
var person = humanScene.instance()
add_child(person)
person.position = Vector2(90, 300)
currentPlayers += 1
print(person.position)
这个效果很好,但是在"_physics_process(delta):"函数,如果我尝试:
"print(person.position)"
它说:
"获取索引'position'无效(base: 'null instance')">
无论我尝试什么,我的代码似乎无法找到实例对象来找到它的位置(我需要它的位置每帧)。是否有一种特殊的方式来访问实例化对象的数据(比如它们的位置?)
这是一个范围问题。变量person
仅在if
中定义,而在_physics_process
中不可用。
您需要首先在有限范围之外定义变量,然后在if
中设置其值。例如:
var person = null
func some_function_where_this_happens():
if currentPlayers < playerLimit:
person = humanScene.instance()
add_child(person)
person.position = Vector2(90, 300)
currentPlayers += 1
print(person.position)
func _physics_process(delta):
print(person.position)
因为看起来你的意图是支持多个播放器,你可能想要将var person = null
部分切换为包含所有播放器的数组。