土管にぶつかる
CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 26/36。
パイプか地面にぶつかると、ゲームが終了します。どちらの場合も、main.gd内の1つの関数につながります。
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueパイプ。パイプは2つの形状(上半分と下半分)を持つArea2Dです。隙間には形状がありません。pipe.gdでbody_enteredを接続し、hitシグナルを発行します。main.gdでは、新しいパイプを追加する前に、それぞれのhitを接続します。
地面。地面の上端はy = 318にあります。飛行キャラクターの端は中央から12ピクセルの位置にあるため、position.yが306を超えると地面に触れます。その後、flyer.gdがcrashedを発行します。
飛行キャラクター、パイプ、タイマーはすべて一時停止可能なので、一時停止するとすべて停止します。
チャレンジ
難しい衝突したらゲームを終了します。
pipe.gdで、signal hitを追加し、_readyでbody_enteredを接続して、ボディが入ったときにhitを発行します。flyer.gdで、signal crashedを追加し、position.yが306を超えたときに発行します。main.gdで、各パイプのhitとフライヤーのcrashedを_on_crashに接続します。ここでGame Overを表示して一時停止します。
「プレイ」を押して落下すると、Game Overが表示されます。その後、「確認」を押します。
自分で試してみよう
extends Node2D
const PIPE = preload("res://pipe.tscn")
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
$Pipes.add_child(pipe)
プロジェクトのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド