Menu
CoddyTech

Prędkość po przekątnej

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 27 z 85.

Przytrzymaj jednocześnie strzałki w prawo i w górę, a surowe osie określą kierunek (1, 0, 1). Jego długość, .magnitude, to pierwiastek kwadratowy z 1 + 1, czyli około 1.41. Poruszający się obiekt pokonuje dzięki temu 1.41 jednostki po przekątnej w czasie, w którym pokonuje 1 jednostkę prosto przed siebie: porusza się o 41% szybciej.

.normalized zwraca kopię wektora wskazującą ten sam kierunek i mającą dokładnie 1 jednostkę długości: (1, 0, 1) zmienia się w około (0.71, 0, 0.71), a (0, 0, 5) zmienia się w (0, 0, 1). Po pomnożeniu przez prędkość wektor ten powoduje ruch z tą prędkością, niezależnie od kierunku. Ta pszczoła leci w stronę kwiatu z prędkością 2 jednostek na sekundę, bez względu na to, czy kwiat jest daleko, czy blisko; bez .normalized leciałaby szybciej, im dalej znajdowałby się kwiat:

public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;

void Update()
{
    Vector3 toFlower = flower - transform.position;
    transform.position += toFlower.normalized * speed * Time.deltaTime;
}

Vector3.zero.normalized pozostaje równe (0, 0, 0), ponieważ zero nie ma kierunku. v.normalized pozostawia v bez zmian; v.Normalize() zmienia samo v.

challenge icon

Wyzwanie

Łatwy

Spraw, aby postać poruszała się po przekątnej z taką samą prędkością jak w linii prostej.

  1. W Update() utwórz Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));.
  2. Dodaj direction.normalized * speed * Time.deltaTime do transform.position.

Naciśnij „Graj” i przytrzymaj dwa klawisze strzałek: postać porusza się po przekątnej nie szybciej niż w linii prostej. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Strzałki lub WASD: poruszaj się wzdłuż osi x i z z prędkością speed, taką samą również po przekątnej.
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity