Bounds
структура в UnityEngine
Выполнено в:UnityEngine.CoreModule
Описание
Представляет собой выравниваемый по оси предельный блок.
предельный блок, выравниваемый по оси, или AABB вкратце, это коробка, выстроенная по координатным осям и полностью охватывающая какой-либо объект. Поскольку коробка никогда не поворачивается относительно осей, ее можно определить только ее center и extents, или в качестве альтернативы min и max пунктов.Bounds используется Collider.bounds, Mesh.bounds и Renderer.bounds.
using UnityEngine;
public class BoundsVisualizer : MonoBehaviour { public Bounds bounds;
void Start() { // Example bounds setup if not assigned if (bounds.size == Vector3.zero) bounds = new Bounds(transform.position, Vector3.one); }
void Update() { DrawBounds(bounds, Color.red); }
void DrawBounds(Bounds b, Color color) { Vector3 min = b.min; Vector3 max = b.max;
Vector3[] corners = new Vector3[8]; // Bottom corners[0] = new Vector3(min.x, min.y, min.z); corners[1] = new Vector3(max.x, min.y, min.z); corners[2] = new Vector3(max.x, min.y, max.z); corners[3] = new Vector3(min.x, min.y, max.z); // Top corners[4] = new Vector3(min.x, max.y, min.z); corners[5] = new Vector3(max.x, max.y, min.z); corners[6] = new Vector3(max.x, max.y, max.z); corners[7] = new Vector3(min.x, max.y, max.z);
// Bottom rectangle Debug.DrawLine(corners[0], corners[1], color); Debug.DrawLine(corners[1], corners[2], color); Debug.DrawLine(corners[2], corners[3], color); Debug.DrawLine(corners[3], corners[0], color);
// Top rectangle Debug.DrawLine(corners[4], corners[5], color); Debug.DrawLine(corners[5], corners[6], color); Debug.DrawLine(corners[6], corners[7], color); Debug.DrawLine(corners[7], corners[4], color);
// Vertical edges Debug.DrawLine(corners[0], corners[4], color); Debug.DrawLine(corners[1], corners[5], color); Debug.DrawLine(corners[2], corners[6], color); Debug.DrawLine(corners[3], corners[7], color); } }
Свойства
| Свойство | Описание |
|---|---|
| center | Центр границы. |
| extents | Размеры границы. Это всегда половина размера границ. |
| max | Максимальная точка коробки. Она всегда равна центру + пределам. |
| min | Минимальная точка коробки. Она всегда равна центру пространства. |
| size | Общий размер коробки. Этот размер всегда в два раза больше, чем размеры. |
Конструкторы
| Конструктор | Описание |
|---|---|
| Bounds | Создает новую границу. |
Открытые методы
| Метод | Описание |
|---|---|
| ClosestPoint | Ближайшая точка на границе. |
| Contains | Содержится ли точка в пределах границы? |
| Encapsulate | Расширяет границы, чтобы включить точку. |
| Expand | Расширить границы на: размер + (количество * 2) вдоль каждой стороны. |
| IntersectRay | Пересекает ли луч эту граничную клетку? |
| Intersects | Пересекается ли с этой границей другая граничная рамка? |
| SetMinMax | Устанавливает пределы на минимальное и максимальное значения в блоке. |
| SqrDistance | Наименьшее квадратное расстояние между точкой и этим пределом. |
| ToString | Возвращает форматированную строку для границ. |