Menu
CoddyTech

土管で得点する

CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 27/36。

通過したパイごとに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を表示します。

challenge icon

チャレンジ

中級

通過するパイプごとに1点を獲得しましょう。

  1. pipe.gdで、signal scoredを追加し、$Gap.body_enteredを接続して、ボディが隙間に入ったときにscoredを発行します。
  2. main.gdで、var score = 0を追加し、開始時に$HUD/Scoreに0を表示します。
  3. 各パイプのscoredを、スコアに1を加えて表示する関数に接続します。

「プレイ」を押して隙間を通り抜けると、スコアに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プレイグラウンド