Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Vector3.ProjectOnPlane

Объявление

public static Vector3 ProjectOnPlane(Vector3 vector, Vector3 planeNormal);

Параметры

planeNormal Направление от вектора к плоскости.
vector Расположение вектора над плоскостью.

Возвращает

Vector3 Расположение вектора на плоскости.

Описание

Проецирует вектор на плоскость, заданную нормалью, ортогональной плоскости.

В Vector3 хранится положение заданного вектора в трехмерном пространстве. Второй Vector3 задается planeNormal и определяет направление от плоскости к вектор, проходящий через начало координат. Vector3.ProjectOnPlane использует два значения Vector3 для создания положения вектора в направлении planeNormal и возвращает положение Vector3 на плоскости.

Вектор начинается с красного круга и заканчивается черным кругом, представляющим нормаль к плоскости.

Приведенный ниже пример скрипта заставляет Update генерировать позицию vector и planeNormal нормально. Статический метод Vector3.ProjectOnPlane получает аргументы и возвращает позицию Vector3.

using System.Collections; using System.Collections.Generic; using UnityEngine; // Vector3.ProjectOnPlane — пример // Генерируем случайную плоскость в xy. Показать положение случайного // вектор и связь с плоскостью. пример ничего не показывает // в представлении игры, но использует Update(). Справочный пример скрипта // использует Gizmos для отображения позиций и осей в Scene. public class Example : MonoBehaviour { private Vector3 vector, planeNormal; private Vector3 response; private float radians; private float degrees; private float timer = 12345.0f; // Генерация значений для всех примеров. // Меняем пример каждые две секунды. void Update() { if (timer > 2.0f) { // Generate a position inside xy space. vector = new Vector3(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f), 0.0f); // Compute a normal from the plane through the origin. degrees = Random.Range(-45.0f, 45.0f); radians = degrees * Mathf.Deg2Rad; planeNormal = new Vector3(Mathf.Cos(radians), Mathf.Sin(radians), 0.0f); // Obtain the ProjectOnPlane result. response = Vector3.ProjectOnPlane(vector, planeNormal); // Reset the timer. timer = 0.0f; } timer += Time.deltaTime; } // Показать пример представления Scene. void OnDrawGizmosSelected() { // Left/right and up/down axes. Gizmos.color = Color.white; Gizmos.DrawLine(transform.position - new Vector3(2.25f, 0, 0), transform.position + new Vector3(2.25f, 0, 0)); Gizmos.DrawLine(transform.position - new Vector3(0, 1.75f, 0), transform.position + new Vector3(0, 1.75f, 0)); // Display the plane. Gizmos.color = Color.green; Vector3 angle = new Vector3(-1.75f * Mathf.Sin(radians), 1.75f * Mathf.Cos(radians), 0.0f); Gizmos.DrawLine(transform.position - angle, transform.position + angle); // Show a connection between vector and response. Gizmos.color = Color.yellow; Gizmos.DrawLine(vector, response); // Now show the input position. Gizmos.color = Color.red; Gizmos.DrawSphere(vector, 0.05f); // And finally the resulting position. Gizmos.color = Color.black; Gizmos.DrawSphere(response, 0.05f); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3