射线的定义
    射线是从一个点沿一个方向发射的一条无限长的线。

    射线在2D世界中

    • API
      • 定义射线:Ray2D ray=new Ray2D( transform.position, 10 * Vector2.right );

    //两个参数分别是起点坐标和方向向量;

    • 绘制射线:Debug.DrawRay( ray.origin, ray.direction, Color.blue );

    //起点,方向,颜色(可选);
    //线的长度与射线相同,如当前射线方向向量为Vector2.right即长度为1;

    • 获取射线碰撞信息:RaycastHit2D info=Physics2D.Raycast( transform.position, Vector2.right);

    //使用起点向量和方向设置射线;
    // 相对抽象的概念;

    • 以上三个API是2D世界中比较重要的,讲道理3D环境下也差不多。

    • 案例

      • 案例1、让我们看一下这段代码:

    image.png

    • 进行了一些修改:
    • image.png
    • image.png

    • 应用举例

      • 检测玩家角色是否在地面上;
      • 《元气骑士》——激光鱼;
      • 《我的世界》——绊线钩;
      • 等等等等

    射线在3D世界中

    • API
      • Physics.Raycast:public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers);

    //射线的发射点,射线的方向,射线的最大距离,检测的layer层范围;

    • RaycastHit类用于存储发射射线后产生的碰撞信息

    • 一些个概念和模型:

      • ScreenToWorldPoint
      • RaycastHit类
    • 案例:

      • 案例一、来自unity官方文档
      • image.png
    • 案例二、还是官方文档

    • image.png

    • 案例三、我的项目

    • image.png

    • 应用范围:

      • FPS中的射击判定;
      • 各种第一人称/第三人称的屏幕准星;
      • ……

    我们如何学习unity?

    • BV1k34y1D7KY
    • 资源汇总帖子(资源汇总·语雀(yuque.com)
    • 思想流程:我想做一个效果——思考、搜索用某种方式达成目标——扩大自己的知识库