ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

100日チャレンジ070 アーム接触判定


アームが小惑星デブリ接触したときの処理を追加。
アームのシーン内のArea3Dで接触判定を行い、body_entered シグナルで処理を行う。アームのArea3Dのシグナルから直接プレイヤーのスクリプトを呼び出せれば楽なのだが、アームはプレイヤー情報を持っていないので出来ず。
そこで、アームで自前のシグナルを発火させ、それをプレイヤー側で受け取るように実装した。
コードは次のような感じ。

arm.gd
func _on_body_entered(body):
    emit_signal("touched", body)

player.gd
func _ready():
   arm.touched.connect(_on_arm_touched)
func _on_arm_touched(body):
   print("touched")