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

Physics.OverlapSphereNonAlloc

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们会阅读用户提出的每一个修改建议,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static int OverlapSphereNonAlloc(Vector3 position, float radius, Collider[] results, int layerMask = AllLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

参数

position 球体的中心。
radius 球体的半径。
results 用于存储结果的缓冲区。
layerMask 一个 层遮罩 定义查询中要包含的碰撞体的层。
queryTriggerInteraction 指定此查询是否应命中触发器。

返回值

int 返回存储到 results 缓冲区中的碰撞体数量。

描述

计算并存储与球体接触或位于球体内部的碰撞体到提供的缓冲区中。

如果缓冲区空间不足,则不会尝试扩展缓冲区。当缓冲区已满时,会返回缓冲区的长度。类似于 Physics.OverlapSphere,但不会产生垃圾。其他资源:Physics.AllLayers

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void ExplosionDamage(Vector3 center, float radius) { int maxColliders = 10; Collider[] hitColliders = new Collider[maxColliders]; int numColliders = Physics.OverlapSphereNonAlloc(center, radius, hitColliders); for (int i = 0; i < numColliders; i++) { hitColliders[i].SendMessage("AddDamage"); } } }

其他资源:层遮罩,特别是“选择性地投射射线”部分,其中包含关于层遮罩的详细示例。