Godot4 キャラのいる場所のタイルに設定したカスタムデータを取得

無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、各タイル独自のカスタムデータを設定した TileSets リソースを使って作成したタイルマップで、キャラのいる場所のタイルのカスタムデータの値TileData の関数を使って取得する手順とスクリプトを紹介します。

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。

前回の記事

前回は、キャラクターが接触しているタイル群を取得するスクリプトの例を紹介しました。

スクリプト

前回の記事では、キャラクターが接触しているタイル群を取得するスクリプトと、そのテスト用の枠を描画する処理を紹介しました。

今回は、それにより得られたタイル群から、カスタムデータを取得する例として、はしごなどの上り下りができるタイルに独自に設定した can_climb bool 型データを取得するスクリプトを紹介します。

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
	# $GodotSan の当たり判定領域に重なっている $TileMapLayer のタイル群を取得します。
	var enterd_tiles: Array[TileData] = get_entered_tiles($TileMapLayer, $GodotSan)
	
	# 昇降可能なタイルに触れているかを確認します。
	var can_climb_or = false
	for enterd_tile in enterd_tiles:
		var can_climb = enterd_tile.get_custom_data("can_climb")
		# 現在接触しているタイルのいずれかが昇降可能ならば true になるように論理和をとります。
		can_climb_or = can_climb_or or can_climb
	# 今回のフレームでの結果を操作キャラクターの変数に設定します。
	$GodotSan.can_climb = can_climb_or

ハイライトしている行で呼び出している TileData.get_custom_data 関数で、指定した名前のカスタムデータを取得しています。

get_entered_tiles 自作関数については前回の記事を参照してください。

関連記事

TileMapLayer ノードにマップチップを描画する手順は以下の記事を参照してください。

CharacterBody2D でジャンプ移動するキャラを作る手順は以下の記事を参照してください。

TileSets リソースの各タイルのカスタムデータの設定については以下の記事を参照してください。

デバッグ用の情報を描画する処理

前述の can_climb カスタムデータを取得した処理のテストとして、 can_climb が true の場合にだけキャラクターの頭上に^の緑色のテキストを描画します。

前回の接触していると判定したセル(タイル)に枠を描画する処理のあとの、ハイライトしている行が、そのために追加した処理です。

# 再描画したい場合は queue_redraw 関数を呼び出してください。
func _draw():
	# デバッグ用。キャラクターと接触しているセルについて枠を描画します。赤はタイルのあるセルで、青はないセルです。
	for draw_info in debug_entered_tile_draw_info_array:
		draw_rect(draw_info.rect2, draw_info.color, false, 3, false)
	# デバッグ用。キャラクターが昇降可能なタイルに触れている場合は ^ を上部に表示します。
	if $GodotSan.can_climb == true:
		draw_string(ThemeDB.fallback_font, $GodotSan.global_position + Vector2(0, -8), "^", HORIZONTAL_ALIGNMENT_CENTER, -1, 16, Color.GREEN)

フォントをプロジェクトに追加していない状態で draw_string で文字列を描画する処理については以下の記事を参照してください。

テスト

F5 / F6 キーなどでタイルマップのシーンを実行してキャラクターを操作すると、カスタムデータ can_climb を設定したハシゴのタイルに触れている場合だけ頭上に「^」が表示されました。

Godot カスタムデータ取得のテスト。 can_climb = true を設定したはしごのタイルと接触している間だけ頭上に^が表示されます。

これにより、TileDataカスタムデータを正しくタイルから取得していることが確認できました。

Godot4 カスタムデータcan_climb=trueの場合にだけキャラの頭上に^を表示するテスト

まとめ

今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、各タイル独自のカスタムデータを設定した TileSets リソースを使って作成したタイルマップで、キャラのいる場所のタイルのカスタムデータの値TileData の関数を使って取得する手順とスクリプトを紹介しました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました