균형 잡힌 대각선 이동
Coddy Godot 여정의 입력과 이동 섹션에 포함된 레슨. 28개 중 11번째.
지난 수업의 주인공은 대각선으로 너무 빠르게 움직입니다. 위쪽과 오른쪽 입력은 Vector2(200, -200)의 속도를 만듭니다. 이 벡터의 길이는 200이 아니라 약 283픽셀입니다.
.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)은 정규화해도 0을 유지하므로 주인공은 멈춥니다.
Input.get_vector()는 길이가 최대 1인 방향 벡터를 반환합니다. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed를 사용해도 대각선 이동 속도가 공정하게 유지됩니다.
챌린지
중급영웅이 대각선을 포함한 모든 방향으로 초당 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 플레이그라운드