Menu
CoddyTech

Vektoren addieren

Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 17 von 67.

Ein Vector3 kann in einer Variable gespeichert werden, und zwei davon werden mit + addiert: x wird zu x addiert, y zu y und z zu z. So verbinden sich zwei Schübe zu einer Bewegung. Dieser Wasserball rollt mit 2 Einheiten pro Sekunde vorwärts, während ihn der Wind mit 1 Einheit pro Sekunde nach rechts bläst:

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;
}

Multipliziert man einen Vektor mit einer Zahl, wird jeder seiner Bestandteile multipliziert: wind * 3 ist (3, 0, 0), ein Sturm, und move * Time.deltaTime wandelt eine Bewegung pro Sekunde in die Bewegung für diesen Frame um. Auch die Subtraktion funktioniert komponentenweise, und a - b ist der Schritt, der von Punkt b zu Punkt a führt. Zwischen zwei Vektoren gibt es kein *: roll * wind lässt sich nicht kompilieren.

challenge icon

Aufgabe

Einfach

Die current eines Flusses trägt das Boot immer mit sich. Solange die Pfeiltaste nach oben gedrückt wird, schiebt auch der motor das Boot zusätzlich zur Strömung an. Beide Bewegungen werden in Einheiten pro Sekunde angegeben und im Inspector festgelegt: Die Strömung beträgt (1, 0, 0) und der Motor (0, 0, 3).

Drücke auf Play und überquere den Fluss mit der Pfeiltaste nach oben. Drücke anschließend auf Check.

Probier es selbst

using UnityEngine;

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

    void Update()
    {
        // Die Strömung treibt das Boot immer an.
        // Solange die Pfeiltaste nach oben gedrückt wird, schiebt auch der Motor das Boot an.
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen des Scripting in Unity