Перемножение компонентов
Функция перемножения компонентов векторов в Unity (C#):Vector[X].Scale(Vector[X] a, Vector[X] b) //Перемножение компонентов
Данная функция возвращает вектор, значение компонентов которого равны произведениям соответствующих компонентов векторов a и b.
Применение для данной функции не найдено.
Векторное произведение
Функция векторного произведения в Unity (C#):Vector3.Cross(Vector3 a, Vector3 b); //Векторное произведение
Возвращает нормаль плоскости, образуемой векторами a и b.
Пример
Имеется летящий самолёт. Нам необходимо предупреждать пилота, если самолёт будет наклонен слишком сильно вперед.using UnityEngine;
using System.Collections;
public class CrossVector : MonoBehaviour {
// Update is called once per frame
void Update ()
{
//Получаем нормаль плоскости в которой летит самолёт
Vector3 normal = Vector3.Cross(transform.forward, transform.right);
//Если сильно наклонен вперед...
if(normal.z > 0.8f)
{
//Предупреждаем пилота.
}
}
}
Скалярное произведение
Функция скалярного произведения в Unity (C#):Vector[X].Dot(Vector[X] a, Vector[X] b); //Скалярное произведение
С помощью данной функции можно, например определить, находиться ли объект впереди игрока.
Скрипт для игрока:
using UnityEngine;
using System.Collections;
public class DotVector : MonoBehaviour {
public Transform target;
void Update()
{
//Позиция на метр впереди игрока
Vector3 forward = transform.TransformDirection(Vector3.forward);
//Позиция цели относительно игрока
Vector3 vTarget = target.position - transform.position;
//Если цель впереди (скалярное произведение больше нуля)
if (Vector3.Dot(forward, vTarget) > 0)
{
//Вперед!
Debug.Log("GO!");
}
}
}
На этом всё.