在2D游戏中,需要进行大量的检测unity圆形射线检测,然后触发一些代码函数。 最常用的是碰撞检测。 然而,除了碰撞检测之外,还有很多方法各有优点。 这里介绍两种制作游戏时常用的方法。
1Physics2D.Raycast射线检测
这很容易理解。 射线检测就是定制一个初始点和方向来发射射线。 如果光线击中您设置的 LayerMask(图层),它将返回一个 RaycastHit2D 对象。 简单点就是,如果命中,则返回命中碰撞。 身体的 RaycastHit2D 对象。 这个对象有很多可以使用的方法。 如果没有命中则返回false。
第四个最常用的重载是,第一个原点指的是发射点,可以写为物体的位置unity圆形射线检测,第二个方向指的是方向,第三个指的是检测距离,第四个是检测指定的图层(一般是自己设置LayerMask对象,然后在unity中设置。如果希望私有并显示在Inspector中游戏素材下载 免费,只需在前面添加[SerializeField]即可)
如果命中,返回的对象方法如下:
如果你希望你的检测光线始终可见,方便编程,可以使用下面的重载函数
/*这里为了画线方便,重载函数Raycast,形参解释
Vector2 offset画线起点(在人物锚点偏移的量)
Vector2 rayDiraction画线方向
float length画线的长度
LayerMask layer画出去的线和哪一层画布检测,这里我们就用自己要攀爬的画布
这个函数重载前两行将人物的现在移动到的坐标传给画线函数古,成为pos + offset,也就是说我们的重载函数的offset意义就是画线起点在人物锚点偏移的量
后面三行将画线颜色改变,有利于后期改动,如果监测到碰撞红色,没有绿色
*/
RaycastHit2D Raycast(Vector2 offset, Vector2 rayDiraction, float length, LayerMask layer)
{
Vector2 pos = transform.position;
RaycastHit2D hit = Physics2D.Raycast(pos + offset, rayDiraction, length, layer);
Color color = hit ? Color.red : Color.green;
Debug.DrawRay(pos + offset, rayDiraction * length, color, 0.2f);
return hit;
}
2、Physics2D.OverlapCircle 检测某个碰撞体是否在某个圆形区域内,并返回该碰撞体。 如果有多个碰撞器游戏素材下载 免费,则返回 z 轴上最小的碰撞器。 如果不是,则返回 false。
一般三个参数,第一原点,第二半径,第三层
如果想在编程时看到检测到的区域,可以使用OnDrawGizmosSelected方法
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.grey;
Gizmos.DrawWireSphere(transform.position , CheckrotateDistance);
}
第一行设置颜色,第二行设置绘画。 第一个参数是圆的中心,与你使用的OverlapCircle的点一致。 后半价与您使用的OverlapCircle的半径一致。
如图所示
文章来源:http://www.360doc.com/content/21/0410/10/10990878_971485818.shtml