【发布时间】:2019-08-12 22:50:08
【问题描述】:
我正在尝试创建一个自上而下的射击游戏,其中包含一个玩家和一个单独场景中的子弹。但是每当我运行游戏时,它都会说
尝试在空实例的基础“空实例”中调用函数“get_position”。
顺便说一句,我是 Godot 的新手。
问题似乎出在这个函数上:
const SPEED = 300
var bullet = preload("res://Mini-Scenes/Bullet.tscn")
func shoot():
var b = bullet.instance()
add_child(b)
b.set_position(position)
b.move_and_slide(Vector2(1, 0).rotated(rotation) * SPEED)
而且我也不认为我了解实例化的工作原理,
所以我的问题是:
- 实例化是如何工作的?
- 是什么导致上述函数失败?
【问题讨论】:
-
我也是新手,最近也遇到了类似的问题,我尝试一起创建播放器和主场景,我认为如果父节点是Node2D(通常是地图一)。能否尝试将射击功能移至子弹或玩家场景?
-
Attempt to call function 'get_position' in base 'null instance' on a null instance表示引擎无法找到您的请求。尝试将您的var bullet更改为onready var bullet。如果还是不行,试试把b.set_position(position)改成b.position = position。 -
我把Node2D改成Node,还是不行。
-
我忘了提...如果我的上述建议都不起作用,请尝试使用
get_parent().add_child(b)添加项目符号