Menu
CoddyTech

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

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

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

Задание

Легко

Течение реки всегда несёт лодку. Пока удерживается клавиша со стрелкой вверх, мотор лодки тоже толкает её, дополняя течение. Оба значения задаются в единицах в секунду в Inspector: течение — (1, 0, 0), а мотор — (0, 0, 3).

Нажми Play и пересеки реку с помощью стрелки вверх, затем нажми Check.

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

using UnityEngine;

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

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

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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