Menu
CoddyTech

タイマーで土管を出す

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

次はパイプです。パイプはシーン pipe.tscn で、上半分と下半分の間に隙間があります。pipe.gd では、毎秒 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 より前にあるため、地面がすべてのパイプの下端を覆います。

challenge icon

チャレンジ

中級

パイプを画面上に流しましょう。

  1. pipe.gdで、const SPEED = 160を追加します。物理フレームごとにパイプを左へ動かし、position.xが-60未満になったら削除します。
  2. main.gdで、const PIPE = preload("res://pipe.tscn")を追加し、$PipeTimer.timeoutを接続します。
  3. タイムアウトのたびに、Pipesノード内の(700, 180)にパイプを作成します。

「プレイ」を押すと、パイプが右から流れてきます。その後、「確認」を押します。

自分で試してみよう

extends Node2D

func _ready():
	pass

プロジェクトのすべてのレッスン

自分で練習してみよう: Godotプレイグラウンド