Godot3如何调用在另一个场景中创建的对象的方法
Godot3 How can I call a method of an object created in another scene
我正在尝试创建一个 Space Blaster 游戏。
我已经创建了主要场景,其中包括玩家精灵和附加的脚本。
我可以创建对象的实例(一颗子弹),当按下 space 栏时它会出现在主场景中。
当我尝试调用 start_at() 方法时,它找不到 method/function。
基本 Node2D
中不存在函数 'start_at()'
extends Sprite
# Declare member variables here.
export var rot_speed = 2.6
export var thrust = 500
export var max_vel = 400
export var friction = 0.65
var bullet = preload("res://Scenes/Firing.tscn")
# Called when the node enters the scene tree for the first time.
func _ready():
position = Vector2(get_viewport().size.x/2, get_viewport().size.y/2)
func _process(delta):
rotation = self.rotation + deg2rad(90 * delta)
...
func shoot():
var b = bullet.instance()
#bullet_container.add_child(b)
add_child(b)
#b.set_position(position)
#b.set_rotation(rot - PI/2)
b.start_at(rotation, position)
带有调用函数的项目符号代码:
extends Area2D
# Declare member variables here. Examples:
var vel = Vector2()
export var speed = 1000
# Called when the node enters the scene tree for the first time.
func _ready():
set_physics_process(true)
func _physics_process(delta):
vel = vel * delta
position = position + vel * delta
#position = position + vel * delta
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
func start_at(dir, pos):
self.rotation = dir
self.posiiton = pos
vel = Vector2(speed, 0).rotated(dir)
请轻点,这是我第一次尝试使用 Godot。
错误消息告诉我们您调用 start_at() 的实例不是项目符号。该实例的类型也是 Node2D 而不是 Area2D。场景“res://Scenes/Firing.tscn”是正确的场景吗?也许子弹脚本不在那个场景的根上?
我正在尝试创建一个 Space Blaster 游戏。 我已经创建了主要场景,其中包括玩家精灵和附加的脚本。
我可以创建对象的实例(一颗子弹),当按下 space 栏时它会出现在主场景中。 当我尝试调用 start_at() 方法时,它找不到 method/function。 基本 Node2D
中不存在函数 'start_at()'extends Sprite
# Declare member variables here.
export var rot_speed = 2.6
export var thrust = 500
export var max_vel = 400
export var friction = 0.65
var bullet = preload("res://Scenes/Firing.tscn")
# Called when the node enters the scene tree for the first time.
func _ready():
position = Vector2(get_viewport().size.x/2, get_viewport().size.y/2)
func _process(delta):
rotation = self.rotation + deg2rad(90 * delta)
...
func shoot():
var b = bullet.instance()
#bullet_container.add_child(b)
add_child(b)
#b.set_position(position)
#b.set_rotation(rot - PI/2)
b.start_at(rotation, position)
带有调用函数的项目符号代码:
extends Area2D
# Declare member variables here. Examples:
var vel = Vector2()
export var speed = 1000
# Called when the node enters the scene tree for the first time.
func _ready():
set_physics_process(true)
func _physics_process(delta):
vel = vel * delta
position = position + vel * delta
#position = position + vel * delta
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
func start_at(dir, pos):
self.rotation = dir
self.posiiton = pos
vel = Vector2(speed, 0).rotated(dir)
请轻点,这是我第一次尝试使用 Godot。
错误消息告诉我们您调用 start_at() 的实例不是项目符号。该实例的类型也是 Node2D 而不是 Area2D。场景“res://Scenes/Firing.tscn”是正确的场景吗?也许子弹脚本不在那个场景的根上?