Unity中的Raycast射线检测函数解析
Unity中的Raycast射线检测函数解析
孤月蓝风 发表于1个月前
Unity中的Raycast射线检测函数解析
  • 发表于 1个月前
  • 阅读 4
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

在使用Unity引擎重新制作魔塔的时候,为了提高游戏性能,启用了新的方法。

其中用到了Raycast射线检测,而在最开始,检测出来总是有问题,有墙的地方检测正常,但是没墙的地方也会检测到碰撞,经过仔细查看,发现是之前太粗心,没有注意到Raycast的参数,于是记下此笔记。

Physics2D.Raycast

参数

origin 射线发射的原点
direction 射线发射的方向
distance 射线发射的距离
layerMask Layer层过滤
minDepth 射线检测Z坐标的最小值
maxDepth 射线检测Z坐标的最大值

之前由于粗心,一直以为参数和DrawLine的差不多,莫名其妙的折腾很长时间。

DrawLine的参数,第一个是起点,第二个是终点。而Raycast,第一个是起点,第二个是方向,第三个是长度。值得注意的是,方向是第二个参数的点的位置相对于起点的方向。当搞清楚这三个参数后,就简单的多了。

public bool checkTile(int x,int y)
{
    Vector2 position = new Vector2(x, y);
    RaycastHit2D hit = Physics2D.Raycast(position, Vector2.zero);
    Debug.DrawLine(new Vector3(x - 0.2f, y, 0), new Vector3(x + 0.2f, y, 0),Color.red);
    if (hit.collider != null)
    {
        print(hit.collider.gameObject.name);
        print("no");
        return false;
    }
    else
    {
        print("ok");
        return true;
    }
}
标签: Unity2D
共有 人打赏支持
粉丝 8
博文 70
码字总数 36962
×
孤月蓝风
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: