Блог программиста
Математика Unity (Урок 14). Vector Умножение.
10.09.2013Математика Unity

Перемножение компонентов

Функция перемножения компонентов векторов в 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!");
		}
	}
}


На этом всё.

24906