Welcome to my site

子から親の関数を呼び出す

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("親の関数名",引数)

の紹介でした。