土管で得点する
CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 24/33。
通過したパイプ1つにつき1ポイントです。パイプには、開口部の後ろにある細い帯状の子ノードArea2Dがあり、名前はGapです。プレイヤーは通り抜けた後にだけそこに触れるので、そのタイミングで得点します。
pipe.gdで、$Gapを通じて子ノードのシグナルに接続し、scoredを発行します:
$Gap.body_entered.connect(_on_gap_body_entered)
func _on_gap_body_entered(body):
scored.emit()main.gdで、新しいパイプごとにscoredへ接続します。scoreに1を加算して、$HUD/Scoreに表示します。str(score)は数値をテキストに変換します。開始時に0を表示します。
チャレンジ
中級pipe.gdで、signal scoredを追加します。$Gap.body_enteredを接続し、物体が隙間に入ったときにscoredを発信します。main.gdで、var score = 0を追加し、開始時に$HUD/Scoreに0を表示します。- 各パイプの
scoredを、スコアを1増やして新しいスコアを表示する関数に接続します。
自分で試してみよう
extends Area2D
signal hit
const SPEED = 160
func _ready():
body_entered.connect(_on_body_entered)
func _physics_process(delta):
position.x -= SPEED * delta
if position.x < -60:
queue_free()
func _on_body_entered(body):
hit.emit()
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
プロジェクトのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド