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. 両方の軸を1つのVector2にまとめます:var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))。
  2. 2行あるvelocityの代わりに、velocityをdirection.normalized() * speedに設定します。

「プレイ」を押すと、ヒーローは斜め方向も含め、あらゆる方向に毎秒200ピクセルで歩きます。次に「確認」を押します。

自分で試してみよう

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プレイグラウンド