Unity3d相交球OverlapSphere解析之美

相交球和射线差不多,但是相交球可以对在相交球范围内的所有碰撞器都发生触碰方法。因此可以用来制作群攻,范围类型的技能判断,也可以配合帧事件来使用。

相交球

相交球用Physics.调用,是Physics的一个静态方法,返回碰撞器数组,即当物体碰撞到相交球,以数组碰撞器的形式返回

public static Collider[] OverlapSphere (Vector3 position, float radius, int layerMask);

代码例子

这里写一个脚本放在控制的物体上,当将这个物体碰撞到设置的层级的物体上时,调用方法

第一个参数是相交球初始位置,

第二个是以该位置为球心设置半径范围,

第二个参数是设置层级LayerMask,这里的层级需要自己添加,然后在检视面板上手动设置,这样则只会对是该层级的碰撞器物体产生方法。

并且因为该方法是返回碰撞器数组,因此配合foreach来遍历这个容器,来对他们做具体的实现。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyHero : MonoBehaviour
{
    //设置层级 : 和当前层级物体进行碰撞检测
    public LayerMask _layerMask;
    void Update()
    {
        //检测在当前位置发射0.5半径大小的球内是否有物体相交
        //检测LayerMask层级上的物体(相同层级)
        Collider[] cs = Physics.OverlapSphere(transform.position, 0.5f, _layerMask);
        if (cs.Length != 0)
        {
            foreach (Collider csCell in cs)
            {
                Debug.Log(csCell.gameObject.name);
            }
        }
    }
    void OnDrawGizmos()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawSphere(transform.position, 0.5f);
    }
}

可以使用OnDrawGizemos()函数(Gizmos测试制作工具),把相交球画出来

 

样例图

Unity3d相交球OverlapSphere解析之美_第1张图片

 

你可能感兴趣的:(unity)