Menu
CoddyTech

Сложение векторов

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 24 из 85.

Значение Vector3 можно хранить в переменной, а два таких значения складываются с помощью +: x складывается с x, y — с y, а z — с z. Так два толчка объединяются в одно движение. Этот пляжный мяч катится вперёд со скоростью 2 единицы в секунду, а ветер дует на него вправо со скоростью 1 единица в секунду:

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

Умножение вектора на число умножает каждую его составляющую: wind * 3 — это (3, 0, 0), то есть шторм, а move * Time.deltaTime преобразует скорость движения за секунду в перемещение за этот кадр. Вычитание тоже выполняется по составляющим, а a - b — это шаг от точки b до точки a. Между двумя векторами нельзя поставить *: выражение roll * wind не компилируется.

challenge icon

Задание

Легко

Река несёт лодку, а стрелка вверх добавляет тягу мотора.

  1. В Update() начни с Vector3 move = current;.
  2. Пока Input.GetKey(KeyCode.UpArrow) возвращает true, добавляй motor к move с помощью +=.
  3. Добавь move * Time.deltaTime к transform.position.

Нажми «Играть»: лодка будет дрейфовать вправо и пересекать реку, пока ты удерживаешь стрелку вверх. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

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

    void Update()
    {
        // Течение всегда несёт лодку.
        // Пока удерживается клавиша со стрелкой вверх, мотор тоже толкает лодку.
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity