Menu
CoddyTech

Równe przekątne

Część sekcji Wejście i ruch ścieżki Godot w Coddy. Lekcja 11 z 28.

Bohater z poprzedniej lekcji porusza się po przekątnej zbyt szybko. Ruch w górę i w prawo daje prędkość Vector2(200, -200). Ten wektor ma długość około 283 pikseli, a nie 200.

.normalized() zachowuje kierunek wektora i ustawia jego długość na dokładnie 1. Pomnóż go przez prędkość:

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

Każdy kierunek oznacza wtedy ruch z prędkością 200 pikseli na sekundę. Po normalizacji Vector2(0, 0) nadal ma długość zero, więc bohater się zatrzymuje.

Input.get_vector() już zwraca kierunek o długości co najwyżej 1. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed zapewnia prawidłową prędkość także po przekątnej.

challenge icon

Wyzwanie

Średni

Spraw, aby bohater poruszał się z prędkością 200 pikseli na sekundę w każdym kierunku, również po przekątnej. Użyj .normalized() na kierunku Vector2 albo użyj Input.get_vector().

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wejście i ruch

Poćwicz samodzielnie: Edytor online Godot