Game development 在戈多我的乒乓球游戏中实例化一个球时出错
你好,我正在戈多做一个乒乓球游戏。到目前为止,一切进展顺利,但我在调试器中遇到以下错误: E 0:01:55.112主体\设置\形状\为\单向\碰撞:刷新查询时无法更改此状态。使用call_deferred()或set_deferred()来更改监视状态 条件“body->get_space()&&flush_querys”为true servers/physics\u 2d/physics\u 2d\u server\u sw.cpp:739@body\u set\u shape\u as\u one\u way\u collision() AddBall.gd:18@_on_Area2D_body_entered() 以下是我用于实例化重复球的代码:Game development 在戈多我的乒乓球游戏中实例化一个球时出错,game-development,godot,Game Development,Godot,你好,我正在戈多做一个乒乓球游戏。到目前为止,一切进展顺利,但我在调试器中遇到以下错误: E 0:01:55.112主体\设置\形状\为\单向\碰撞:刷新查询时无法更改此状态。使用call_deferred()或set_deferred()来更改监视状态 条件“body->get_space()&&flush_querys”为true servers/physics\u 2d/physics\u 2d\u server\u sw.cpp:739@body\u set\u shape\u as\u
extends Node2D
var collect = false
var ballscene = null
func _ready():
$Area2D/AnimatedSprite.play("Spin")
func _on_Area2D_body_entered(body):
#print(body.name)
if body.name=="Ball"&&collect==false:
collect = true
$Collection.play()
$AnimationPlayer.play("Fade")
$Area2D/AnimatedSprite.stop()
var ball = load("res://Scenes/BallDuplicate.tscn")
ballscene = ball.instance()
find_parent("SpawnManager").get_node("BallDuplicate").add_child(ballscene)
queue_free()
是的,我在加电中引用了球,而不是我的spawn manager。正如错误消息所建议的那样,您应该使用
调用_defered()
延迟节点树更改,因为在碰撞处理过程中,不允许在场景中添加其他刚体
extends Node2D
var collect = false
var ballscene = null
func CollectFunc():
if not collect:
collect = true
$Collection.play()
$AnimationPlayer.play("Fade")
$Area2D/AnimatedSprite.stop()
var ball = load("res://Scenes/BallDuplicate.tscn")
ballscene = ball.instance()
find_parent("SpawnManager").get_node("BallDuplicate").add_child(ballscene)
queue_free()
func _ready():
$Area2D/AnimatedSprite.play("Spin")
func _on_Area2D_body_entered(body):
#print(body.name)
if body.name=="Ball":
call_deffered("CollectFunc")
谢谢你,这真是奇迹