版本:Unity 6 (6000.0)
语言中文
  • C#

GeometryUtility.CalculateBounds

提出建议

成功!

感谢您帮助我们提升 Unity 文档的质量。虽然我们并不能采纳所有提交,但我们会仔细阅读每条用户建议的变更,并根据情况进行更新。

关闭

提交失败

由于某种原因,无法提交您的建议变更。请在几分钟后<a>重新尝试</a>。感谢您拨冗帮助我们提升 Unity 文档的质量。

关闭

取消

声明

public static 界限 CalculateBounds(Vector3[] 位置, Matrix4x4 转换);

参数

位置 存储 3d 位置的数组。
转换 用于转换界限计算的位置、旋转和大小的矩阵。

返回

界限 计算轴对齐包围框。

说明

根据给定的 位置 数组和变换矩阵计算界限框。

GeometryUtility.CalculateBounds 生成 界限 围绕框。位置参数存储 3d 点阵列。每个点都在生成的轴对齐包围框内。转换参数提供变换 Matrix4x4,该变换使用 Vector3 位置、四元数旋转和 Vector3 缩放。

以下示例展示了如何使用 CalculateBounds。一个 LightProbeGroup 会将 位置 传递给 CalculateBounds。示例代码创建了一个由八个光照探针组成的包围框。在默认情况下,光照探针距单位立方体的每个角一个单位。

运行示例

  1. 创建一个项目,然后添加名为 GameObject 的空 GameObject
  2. 将一个 3D cube 添加为 GameObject 的子项,并将其命名为 Cube
  3. Cube 添加 LightProbeGroup 组件。
  4. Cube 添加以下脚本。
  5. 运行 项目,然后切换回 场景 视图。

Scene 视图中,您可以看到 LightProbeGroup。 当游戏运行时,旋转会在 Awake 中发生变化。指示 LightProbeGroup 的 8 个黄色球体更改位置,并且 会旋转显示。 Scene 模式显示 Cube 绕 x、y 和 z 轴旋转,并显示在 Local tool handle 中。 旋转 Cube 会改变八个 LightProbeGroup 光照探针的位置。 Scene 模式会旋转和缩放以显示光照探针。此外,Cube 会旋转,并且 LightProbeGroup 会进行更新。如果您重新调整 Cube 的大小,LightProbeGroup 会更改大小。

using UnityEngine;
using System.Collections;

// GeometryUtility.CalculateBounds - example

public class Example : MonoBehaviour { void Awake() { transform.position = new Vector3(0.0f, 0.0f, 0.0f); transform.Rotate(10.0f, 30.0f, -50.0f, Space.Self);

Debug.Log(transform.localToWorldMatrix); }

void OnDrawGizmosSelected() { LightProbeGroup lightProbeGroup = GetComponent<LightProbeGroup>();

Vector3 center = transform.position; Bounds bounds = GeometryUtility.CalculateBounds(lightProbeGroup.probePositions, transform.localToWorldMatrix); Gizmos.color = new Color(1, 1, 1, 0.25f); Gizmos.DrawCube(center, bounds.size); Gizmos.DrawWireCube(center, bounds.size); } }