Menu
CoddyTech

Dodawanie wektorów

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

Vector3 można przechowywać w zmiennej, a dwie takie wartości można dodać za pomocą +: x dodaje się do x, y do y, a z do z. Tak właśnie dwa pchnięcia łączą się w jeden ruch. Ta piłka plażowa toczy się do przodu z prędkością 2 jednostek na sekundę, a wiatr popycha ją w prawo z prędkością 1 jednostki na sekundę:

Vector3 roll = new Vector3(0, 0, 2);
Vector3 wind = new Vector3(1, 0, 0);

void Update()
{
    Vector3 move = roll + wind;   // (1, 0, 2)
    transform.position += move * Time.deltaTime;
}

Mnożenie wektora przez liczbę mnoży każdą z jego składowych: wind * 3 to (3, 0, 0), czyli wichura, a move * Time.deltaTime zamienia ruch na sekundę w ruch w tej klatce. Odejmowanie również działa składowa po składowej, a a - b to krok prowadzący z punktu b do punktu a. Między dwoma wektorami nie można użyć *: roll * wind się nie kompiluje.

challenge icon

Wyzwanie

Łatwy

Rzeka niesie łódź, a strzałka w górę dodaje jej napęd.

  1. W Update() zacznij od Vector3 move = current;.
  2. Gdy Input.GetKey(KeyCode.UpArrow) ma wartość true, dodaj motor do move za pomocą +=.
  3. Dodaj move * Time.deltaTime do transform.position.

Naciśnij „Graj”: łódź dryfuje w prawo i przepływa przez rzekę, gdy przytrzymujesz strzałkę w górę. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Boat : MonoBehaviour
{
    public Vector3 current = new Vector3(0, 0, 0);
    public Vector3 motor = new Vector3(0, 0, 0);

    void Update()
    {
        // Prąd zawsze niesie łódź.
        // Gdy strzałka w górę jest wciśnięta, silnik również pcha łódź.
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity