前言
相交球和射线差不多,但是相交球可以对在相交球范围内的所有碰撞器都发生触碰方法。因此可以用来制作群攻,范围类型的技能判断,也可以配合帧事件来使用
相交球
相交球用Physics.调用,是Physics的一个静态方法,返回碰撞器数组,即当物体碰撞到相交球,以数组碰撞器的形式返回
public static Collider[] OverlapSphere (Vector3 position, float radius, int layerMask);
代码例子
这里写一个脚本放在控制的物体上,当将这个物体碰撞到设置的层级的物体上时,调用方法
第一个参数是相交球初始位置,
第二个是以该位置为球心设置半径范围,
第二个参数是设置层级LayerMask,这里的层级需要自己添加,然后在检视面板上手动设置,这样则只会对是该层级的碰撞器物体产生方法。
并且因为该方法是返回碰撞器数组,因此配合foreach来遍历这个容器,来对他们做具体的实现。
using UnityEngine;
using System.Collections;
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测试制作工具),把相交球画出来
样例图
这里的蓝色cube里面有一球状物即是相交球的范围