子から親の関数を呼び出す
Godotには子から親の関数を呼び出す機能があります。(つい最近まで知りませんでした(^_^;))
フルーツパズルのサンプルプロジェクトでこの機能を使ってたので、「ほぉ~、こんな使い方ができるんや。」と、思わず独り言を漏らしてしまいました。
例えば
Mainシーン(Main.gd)
+--Player クラスはRigidBody2DでモードがKinematic
| +-Sprite
| +-CollisionShape2D
+--Fruit(Fruit.gd) クラスはRigidBody2D
+-Sprite
+-CollisionShape2D
という構成でMain.gdに
func change_image(_id):
$Player/Sprite.texture = load("res://assets/image/fuit"+
str(_id) +".png")
みたいなプレーヤ-のスプライトにテクスチャーを挿入する関数を作ります。
Fruit.gdに衝突検知の関数を作って
func _on_RigidBody2D_body_entered(body):
if body.name == "Player":
get_parent().call_deferred("change_image",fruit_id)
FruitがPlayerに衝突したらPlayerのテクスチャーを変える関数を呼び出す、みたいなことができます。
ということで、今回は
get_parent().call_deferred("親の関数名",引数)
の紹介でした。