射线的定义
射线是从一个点沿一个方向发射的一条无限长的线。
射线在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、让我们看一下这段代码:
- 进行了一些修改:
应用举例
- 检测玩家角色是否在地面上;
- 《元气骑士》——激光鱼;
- 《我的世界》——绊线钩;
- 等等等等
射线在3D世界中
- API
- Physics.Raycast:public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers);
//射线的发射点,射线的方向,射线的最大距离,检测的layer层范围;
RaycastHit类用于存储发射射线后产生的碰撞信息
一些个概念和模型:
- ScreenToWorldPoint
- RaycastHit类
案例:
- 案例一、来自unity官方文档
案例二、还是官方文档
案例三、我的项目
应用范围:
- FPS中的射击判定;
- 各种第一人称/第三人称的屏幕准星;
- ……
我们如何学习unity?
- BV1k34y1D7KY
- 资源汇总帖子(资源汇总·语雀(yuque.com))
- 思想流程:我想做一个效果——思考、搜索用某种方式达成目标——扩大自己的知识库