Сложение векторов
Часть раздела Основы скриптинга в 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 не скомпилируется.
Задание
ЛегкоТечение реки всегда несёт лодку. Пока удерживается клавиша со стрелкой вверх, мотор лодки тоже толкает её, дополняя течение. Оба значения задаются в единицах в секунду в 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()
{
// Течение всегда несёт лодку.
// Пока нажата клавиша со стрелкой вверх, мотор тоже толкает лодку.
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света