Menu
CoddyTech

斜め移動の速度をそろえる

CoddyのGodotジャーニー「入力と移動」セクションの一部。レッスン 11/28。

前のレッスンのヒーローは、斜め方向に速くなりすぎます。上と右を押すと、速度は Vector2(200, -200) になります。このベクトルの長さは約283ピクセルで、200ではありません。

.normalized() はベクトルの向きを保ったまま、長さを正確に1にします。それに速度を掛けます。

var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()

これで、どの方向にも毎秒200ピクセルで移動します。正規化しても Vector2(0, 0) はゼロのままなので、ヒーローは停止します。

Input.get_vector() は、長さが最大1の方向ベクトルをすでに返します。velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed を使っても、斜め方向で速度が公平になります。

challenge icon

チャレンジ

中級

ヒーローが斜め方向も含むすべての方向に、1秒あたり200ピクセルで歩くようにします。Vector2の方向に.normalized()を使うか、Input.get_vector()を使います。

自分で試してみよう

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
	velocity.x = Input.get_axis("move_left", "move_right") * speed
	velocity.y = Input.get_axis("move_up", "move_down") * speed
	move_and_slide()
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

入力と移動のすべてのレッスン

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