Godot4 デフォルトの入力アクションの確認&マウス左ボタンアクションの追加

無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、ジャンプや左右の移動の入力を検知するために使用できるインプットアクションとして最初から使用できる組み込みアクション確認と、さまざまなキーの組み合わせの新しいアクションを追加する手順を紹介します。

キーが押された直後だけ反応する is_just_action_pressed 関数と、それに似せた _input 関数のイベント処理の比較のテスト結果も紹介します。

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

最初から使える組み込みアクションの確認

GodotEngine4 では最初から、さまざまなキー入力の組み合わせをインプットアクション名で指定して、ちょうど押された瞬間、離された瞬間、押されている間などのインプットアクションの状態簡単に調べられます。

例えば、左右に移動したりジャンプなどの 2D ゲームのキャラクターの動きを実装しやすい CharacterBody2D クラスでは、スクリプトを作成すると自動的に以下のようなコードが追加されています。

7行目の左右移動の入力判定の引数の文字列 ui_left , ui_right組み込みアクション名前で、← → キーなどに対応しています。
2行目の ui_accept は、スペースキー・エンターキーに対応した組み込みアクションの名前で、スケルトンコードでは、ジャンプのキーとして使用されています。

	# Handle jump.
	if Input.is_action_just_pressed("ui_accept") and is_on_floor():
		velocity.y = JUMP_VELOCITY

	# Get the input direction and handle the movement/deceleration.
	# As good practice, you should replace UI actions with custom gameplay actions.
	var direction = Input.get_axis("ui_left", "ui_right")
	if direction:
		velocity.x = direction * SPEED
	else:
		velocity.x = move_toward(velocity.x, 0, SPEED)

CharacterBody2D を使った移動・ジャンプについては、以下の記事を参照してください。

どのような組み込みアクションが用意されいていて、対応するキーがどうなっているかなど、組み込みアクションの設定を確認するには、メニュー「プロジェクト」→「プロジェクト設定」でダイアログを開き、「インプットマップ」タブの右上の「組み込みアクションを表示」トグルボタンを有効にします。

Godot4 デフォルトの組み込みアクションの確認

新しいアクション(マウス左ボタン)の追加

今回は、マウスの左ボタンを押された直後の1フレームだけ入力を検知するために、マウスの左ボタンインプットアクション追加します。

「プロジェクト設定」ダイアログの「インプットマップ」タブで「追加」ボタンの左側のテキストボックスに追加するアクションの名前入力してから右側の「追加」ボタンを押します。
※「プロジェクト設定」ダイアログはメニュー「プロジェクト」→「プロジェクト設定」で開きます。

Godot4 クリック、マウス左ボタンに反応する組み込みアクションの追加2

入力したアクション名(例では ui_click)がアクションのリストに追加されました。

「組み込みアクションを表示」トグルボタンをONにしていると、最初から用意されているたくさんの組み込みアクションも表示されてわかりづらいので OFF にすると探しやすいです。

アクションを追加したら、そのアクションに対応する入力(例ではマウス左ボタン)を追加するため、アクション名の右側の「+」ボタンを押します。

Godot4 クリック、マウス左ボタンに反応する組み込みアクションの追加3

「イベントの設定」ダイアログが表示されたら、アクションに対応するキーやボタンを選択して OK ボタンを押します。
例では、ツリーの中から「マウスのボタン」→「マウス左ボタン」を選択しました。

Godot4 クリック、マウス左ボタンに反応する組み込みアクションの追加4

追加したアクション名の下位に、選択した入力(例ではマウス左ボタン)が追加されました。

Godot4 クリック、マウス左ボタンに反応する組み込みアクションの追加5

「+」ボタンをもう一度おして、別の入力も追加で対応させられます。
また、鉛筆アイコン入力項目再選択ゴミ箱アイコンで追加した入力項目削除できます。

Godot4 クリック、マウス左ボタンに反応する組み込みアクションの追加6

テスト

追加したアクション ui_click を、その入力が押された直後の1フレームだけ検知する Input.is_action_just_pressed 関数の引数にいれてテストしてみましょう。
※クリックの検知は押された直後より、離れた直後のほうが良いかもしれません。その場合は、 Input.is_action_just_released 関数を利用できます。

下のスクリプトでは、検知した際に、メッセージが下パネルの出力に1行表示されます。

func _process(delta):
	# Enter / Space キー / マウス左ボタン(クリック) が押された直後の場合
	if Input.is_action_just_pressed("ui_click"):
		print("_process(): マウス左ボタンが押されました。")
	return

マウスをクリックすると1回だけメッセージが表示され、ボタンを押した直後だけアクションを検知していることがわかります。
※マウスポインタの周囲が黄色いときはマウス左ボタンを押しているときです。わざとマウスを少し長く押してから離しています。

Godot4 Input.is_action_just_pressed ではマウス左ボタンが押された直後だけ反応します。

_input イベント関数との違い

_input イベント関数でも event 引数を受け取って、クリックの検知の処理を行いました。
※もっと良い処理方法があるかもしれません。

func _input(event):
	# 左クリックまたはタップされた場合
	if (event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT) or (event is InputEventScreenTouch):
		print("_input(): マウス左ボタンが押されました。")
	return

テストすると、_input イベント関数では、マウス左ボタン押した直後離した直後2回反応しました。
※ 先ほどの _process の処理は無効にしています。

そのため、クリックすると別のフレームで2回マウスクリックの処理をしてしまいます。
※ or (event is InputEventScreenTouch) を取り除いても同じ結果でした。

Godot4 _input(event)ではマウス左ボタンを押したときと離したときに反応します。

このことから、ボタンやキーが押された直後のイベントを取得したいならば、アクションを追加して、Input.is_action_just_pressed 関数を使用した方が、簡単です。

_input イベント関数は、Input の関数で用意されていないような独自の入力判定を作る際に向いていると思いました。

まとめ

今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、ジャンプや左右の移動の入力を検知するために使用できるインプットアクションとして最初から使用できる組み込みアクション確認と、さまざまなキーの組み合わせの新しいアクションを追加する手順を紹介しました。

キーが押された直後だけ反応する is_just_action_pressed 関数と、それに似せた _input 関数のイベント処理の比較のテスト結果も紹介しました。

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