斜め移動の速度をそろえる
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 を使っても、斜め方向で速度が公平になります。
チャレンジ
中級ヒーローが斜め方向も含むすべての方向に、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()
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
入力と移動のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド