MENU

【Godot】キャラクターを上下左右に動かす方法

記事内に商品プロモーションが含まれる場合があります

キーボードの矢印キーでキャラクターを上下左右に移動させる方法を紹介します。

目次

入力アクションの登録

まずは、キーボードの操作(今回は上下左右)を登録する必要があります。

メニューから「プロジェクト → プロジェクト設定」を選択します。

インプットマップ」を開きます。

ここにアクションを追加していきます。

下の画像の「新しいアクションの追加」のところにアクション名を入力して「追加」ボタンを押してください。

例では次のようにmove_right、move_left、move_down、move_upとしておきました。

次に登録したそれぞのアクションにイベントを紐づけます。

画面右にある「+」ボタンを押してください。

イベント設定画面が表示されるので、「Right」を選択して「OK」ボタンを押します。

同様にしてそれぞれのアクションにイベントを設定すると、最終的に以下のようになります。

これで入力アクションの登録は完了です。

スクリプトで上下左右のキーが押されたかチェックする

キーが押されているかどうかを Input.is_action_pressed() メソッドで検出できます。

押された場合は true 、押されていない場合は false を返します。

以下、上下左右がキーが押されているか検出するためのコードです。

func _physics_process(delta):
	if Input.is_action_pressed("move_right"):
		print("右が押されました")
	if Input.is_action_pressed("move_left"):
		print("左が押されました")
	if Input.is_action_pressed("move_down"):
		print("下が押されました")
	if Input.is_action_pressed("move_up"):
		print("上が押されました")

Input.is_action_pressed()の()の中は先ほど登録したアクション名を指定する必要があります。

スペルミスに注意してください。

上下左右のキーが押された時にキャラクターを移動させる

上下左右のキーが検知できるようになったので、それぞれのキーを押したときにキャラクターを移動させます。

やり方は色々はありますが、以下はその一例です。

extends CharacterBody2D

var speed = 300.0

func _physics_process(delta):
	# 速度ベクトルを初期化
	var velocity = Vector2.ZERO 

	if Input.is_action_pressed("move_right"):
		velocity.x += 1
	if Input.is_action_pressed("move_left"):
		velocity.x -= 1
	if Input.is_action_pressed("move_down"):
		velocity.y += 1
	if Input.is_action_pressed("move_up"):
		velocity.y -= 1

    # 速度が0より大きい場合、速度を正規化し、速度ベクトルを更新
	if velocity.length() > 0:
		velocity = velocity.normalized() * speed
	
	# 移動処理:キャラクターの位置を速度ベクトルと経過時間に基づいて更新
	position += velocity * delta

実行結果

Share

Comment

コメントする

目次