Godot4 実行画面にデバッグ用の四角形や円を描画するスクリプトの例

無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、画像を用意しなくても、関数を1回呼び出すだけで、四角形や円を画面に描画するスクリプトの例を紹介します。
タイルマップを描画する TileMapLayer ノードのスクリプトで行いますが、 CanvasItem 派生の様々なクラスで利用できます。

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

draw_系の関数は _draw イベント関数内で使用可能

CanvasItem には、今回使用する矩形や円を描画する draw_rect, draw_circle メンバ関数以外にも draw_string, draw_circle, draw_polygon など、様々な描画関数があります。
これらの draw_ から始まる関数は、 CanvasItem の _draw イベント関数をオーバーライドした中でのみ使用できます。

Several functions for drawing on the CanvasItem are provided (see draw_* functions). However, they can only be used inside _draw, its corresponding Object._notification or methods connected to the draw signal.

CanvasItem 上に描画するための関数がいくつか提供されています (draw_* 関数を参照)。ただし、_draw、それに対応する Object._notification、または描画信号に接続されたメソッド内でのみ使用できます。
CanvasItem — Godot Engine (4.x)の日本語のドキュメント と Google 翻訳

draw_ 系の関数は CanvasItem 派生のクラスなら使用可能

draw_ 系の関数は、 CanvasItem クラスのメンバ関数なので、そこから派生した Control や Node2D 系統のたくさんのクラスで使用可能です。

スクリプトの例

今回は、前回まで作成してきたタイルマップ (CanvasItem 派生クラスの一つ TileMapLayer ) に割り当ててあるスクリプトに描画処理を追加します。

スタート地点ゴール地点を示す場所に仮のマークとして四角形と円を描画する _draw イベント関数の実装例は以下です。これをスクリプトに追加します。
※スクリプトは自己責任でご使用ください。

func _draw():
	# 矩形(四角形)を描画します
	draw_rect(Rect2(0, 0, 16, 16), Color.CRIMSON, false, 3, false)
	# 円を描画します
	draw_circle(Vector2((16 * 3) + 8, (16 * -1) - 8), 8, Color.AQUA, false, 3, false)

draw_rect の第一引数 Rect2(0, 0, 16, 16) は左上の座標(0, 0) と横と縦の幅 (16, 16) を指定しています。
その後、塗りつぶすかどうか、線の幅アンチエイリアスを行うかどうか、を設定します。

draw_circle の第一引数は、円の中心座標です。16 や 8 が使われているのは、タイルが 16 × 16 で、円の中心座標はタイルの中心にくるためです。
その後、半径塗りつぶすかどうか、線の幅アンチエイリアスを行うかどうか、を設定します。

詳しくは、CanvasItem の各関数の説明をご覧ください。

テスト

F5 / F6 キーでタイルマップのシーンを実行すると、CanvasItem 派生クラスのひとつ TileMapLayer ノードのスクリプトに追加した _draw 関数で実行した draw_rect, draw_circle 関数に応じた四角形や円が画面に描画されました。

テストでちょっとしたマークをつけたいときなどは、便利かもしれません。
#簡素なまるばつゲームならば、Node2D ノードにスクリプトを割り当てて、円と線を引く関数を使えばできてしまうかも。

Godot4 CanvasItem draw_系の使用例

再描画をしたい場合は queue_redraw()

_draw 関数は _ready の内部で呼ばれますが、それ以降のフレーム処理などで新たに描画したい場合は、queue_redraw 関数を呼び出しましょう。
その後、 _draw 関数が再びシステムから呼び出され、再描画ができます。

参照:Custom drawing in 2D — Godot Engine (4.2) documentation in English

まとめ

今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、画像を用意しなくても、関数を1回呼び出すだけで、四角形や円を画面に描画するスクリプトの例を紹介しました。
タイルマップを描画する TileMapLayer ノードのスクリプトで行いますが、 CanvasItem 派生の様々なクラスで利用できます。

参照サイト 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をコピーしました