Unity+Hololens学习记录-射线应用
前言
最近不断地被要求实现Unity与Holotoolkit上的一些新操作功能,便想着写一下博客记录汇总一下各个方向的操作,也是方便以后的工作进行资料查询。也是作为一个新手结合官网API介绍,码一下自己对于一些系统的理解,希望有大神能够提点一下,让我修正有错误的地方。
射线介绍:
射线(Ray)是Unity系统中用于检测碰撞的一个手段,常用于检测周围是否存在物体,以及利用周围的物体进行判断有不同的响应。
(官网定义: 射线是从原点开始并沿某个方向前进的无限线。)
射线应用元素介绍:
Ray
- 方向(direction)
- 原点(origin)
- GetPoint()
- ToString()
RaycastHit
- barycentricCoordinate:击中物体重心坐标
- collider:击中的碰撞体
- distance:原点到碰撞点距离
- lightmapCoord: Vector2 这可用于对光照贴图进行采样并将采样的颜色值设置为移动对象的材质颜色,以使其与烘焙照明大致匹配。
- normal:射线击中表面的法线
- point:碰撞点
- rigidbody:碰撞的刚体
- textureCoord:uv纹理坐标
- textureCoord2:uv第二个纹理坐标
- transform:碰撞体的transform
- triangleIndex:碰撞体triangle的索引
Raycast
public static bool Raycast(Vector3 origin, Vector3 direction,
float maxDistance = Mathf.Infinity,int layerMask = DefaultRaycastLayers,
QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
- origin:射线起点
- direction:射线方向
- maxDistance:射线最远距离
- layerMask:用于在投射射线时选择性地忽略碰撞器
- layers:最常用于相机中仅渲染场景的一部分,并通过灯光仅照亮场景的某些部分。但它们也可以被光线投射用来有选择地忽略colliders或创建碰撞。
- QueryTriggerInteraction:指定此查询是否应该触发触发器。
射线应用实例:
射线碰撞信息获取
RatcastHit hit;
Physics.Raycast(ray, out hit) //单个碰撞体
RatcastHit[] hits;
Hits=Physics.RaycastAll(transform.position,transform.forward,distan)//碰撞体数组
Camera发出Ray
Ray ray=Camera.main.ScreenPointToRay(new Vector3(0, 0, 0));
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Debug.