Witam, pracuję nad grą Pong w Godocie. Wszystko idzie dobrze do tej pory, ale otrzymuję ten błąd w moim debuggerze:

E 0: 01: 55.112 Body_set_shape_as_one_way_collision: Nie można zmienić tego stanu podczas płukania zapychaczy. Użyj call_deferred () lub set_deferred (), aby zamiast tego zmienić stan monitorowania.

Stan "Body-> Get_Space () && Flushing_queries" jest prawdziwe.

Serwery / Physics_2D / Physics_2D_Server_sw.cpp: 739 @ body_set_shape_as_one_way_collision ()

Addball.gd:18 @ _ mon_area2d_body_ened ()

Oto mój kod do umieszczenia duplikatu piłki:

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()
        

Tak, wystąpię piłkę w władzę, a nie mój menedżer spawn.

1
Jacob Mutale 14 marzec 2021, 15:11

1 odpowiedź

Najlepsza odpowiedź

Ponieważ komunikat o błędzie zaleca, powinieneś odłożyć zmiany drzewa węzła z call_deffered(), ponieważ nie można kopnąć z dodaniem kolejnych sztywnych ciał na scenę podczas przetwarzania kolizji.

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")
1
Oliort 14 marzec 2021, 13:37