Godotでset_deferred()を使って現在フレーム後にプロパティに新しい値をセットする
エリアのコリジョン形状を無効にすると、それがエンジンの衝突処理の途中だったときにエラーが発生する可能性があります。 set_deferred() を使用すると、安全にシェイプを無効にできるようになるまでGodotを待機させることができます。
衝突処理の途中でCollisionShape2Dをdisableにしないために、set_deferred()を使う
code:set_deferred.gd
func _on_Player_body_entered(body):
hide() # Player disappears after being hit.
emit_signal("hit")
# Must be deferred as we can't change physics properties on a physics callback.
$CollisionShape2D.set_deferred("disabled", true)
set_deferred()のドキュメント
void set_deferred ( String property, Variant value )
Assigns a new value to the given property, after the current frame's physics step. This is equivalent to calling set via call_deferred, i.e. call_deferred("set", property, value).
現在物理ステップのフレーム後に新しいvalueがpropertyに設定される