2d游戏探测检测触发代码函数的比较多用的方法

2d游戏探测检测触发代码函数的比较多用的方法

在2D游戏中,需要进行大量的检测unity圆形射线检测,然后触发一些代码函数。 最常用的是碰撞检测。 然而,除了碰撞检测之外,还有很多方法各有优点。 这里介绍两种制作游戏时常用的方法。

1Physics2D.Raycast射线检测

这很容易理解。 射线检测就是定制一个初始点和方向来发射射线。 如果光线击中您设置的 LayerMask(图层),它将返回一个 RaycastHit2D 对象。 简单点就是,如果命中,则返回命中碰撞。 身体的 RaycastHit2D 对象。 这个对象有很多可以使用的方法。 如果没有命中则返回false。

第四个最常用的重载是,第一个原点指的是发射点,可以写为物体的位置unity圆形射线检测,第二个方向指的是方向,第三个指的是检测距离,第四个是检测指定的图层(一般是自己设置LayerMask对象,然后在unity中设置。如果希望私有并显示在Inspector中游戏素材下载 免费,只需在前面添加[SerializeField]即可)

如果命中,返回的对象方法如下:

UNITY2d检测方法OverlapCircle与Raycast详解

如果你希望你的检测光线始终可见,方便编程,可以使用下面的重载函数

   /*这里为了画线方便,重载函数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的半径一致。

如图所示

UNITY2d检测方法OverlapCircle与Raycast详解

文章来源:http://www.360doc.com/content/21/0410/10/10990878_971485818.shtml