タイマーで土管を出す
CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 21/33。
次はパイプです。パイプはシーン pipe.tscn で、上半分と下半分の間に隙間があります。pipe.gd では、1秒あたり SPEED ピクセルの速さで左にスライドします。左端を過ぎると自分自身を削除するので、古いパイプがたまりません。
position.x -= SPEED * delta
if position.x < -60:
queue_free()このシーンには、1.6秒ごとに作動する PipeTimer という Timer があります。main.gd で、その timeout シグナルを接続し、右端の外側にパイプを作成します。
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, 180)
$Pipes.add_child(pipe)Godotはツリーの順序でノードを描画します。Pipes は Ground より前にあるため、地面がすべてのパイプの下部に重なります。
チャレンジ
中級pipe.gdにconst SPEED = 160を追加します。物理フレームごとにパイプを左へ移動させ、position.xが-60未満になったら削除します。main.gdにconst PIPE = preload("res://pipe.tscn")を追加し、$PipeTimer.timeoutを接続します。タイムアウトのたびに、Pipesノード内の(700, 180)にパイプを作成します。
自分で試してみよう
extends Node2D
func _ready():
pass
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
プロジェクトのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド