Unity API Raycast射线的使用

射线检测之基本使用

从开始点发射一条射线,按照指定的方向,和指定的长度(不指定则为无限长的),判断有没有与其它的碰撞体发生碰撞。

射线的基本碰撞检测

void Update () {
    //创建射线,参数:(起点,方向)
    //第一个参数+transform.forward是为了不跟自身发生碰撞
    Ray ray = new Ray(transform.position+transform.forward, transform.forward);
    bool isCollider = Physics.Raycast(ray);//射线碰撞检测,碰到物体后返回true
    Debug.Log(isCollider);
}

射线检测之重载方法

创建射线

Ray ray = new Ray(transform.position + transform.forward, transform.forward);

//创建射线,参数:(起点,方向)

//第一个参数+transform.forward是为了不跟自身发生碰撞

 

创建碰撞信息

RaycastHit hit;

hit.collider; //射线碰撞到的碰撞器

hit.point;     //射线碰撞到的点

 

layerMask参数

设置后只能与这里的层发生碰撞

LayerMask.GetMask("Enemy1", "Enemy2", "UI")

Unity API Raycast射线的使用_第1张图片

 

Raycast(Ray ray)

参数:射线

 

Raycast(Ray ray, float maxDistance)

参数1:射线,2:射线的距离

bool isCollider = Physics.Raycast(ray, 1);

 

Raycast(Ray ray, out RaycastHit hitInfo)

参数1:射线,2:碰撞信息

bool isCollider = Physics.Raycast(ray, out hit);

 

Raycast(Ray ray, float maxDistance, int layerMask)

参数1:射线,2:距离无限长,3:要发生碰撞的层

bool isCollider = Physics.Raycast(ray, Mathf.Infinity, LayerMask.GetMask("Enemy1", "Enemy2", "UI"));

 

Raycast(Vector3 origin, Vector3 direction)

参数:起点,方向

 

Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance)

参数:射线,碰撞信息,距离

 

Raycast(Vector3 origin, Vector3 direction, float maxDistance)

参数:起点,方向,距离

 

Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo)

参数:起点,方向,碰撞信息

 

Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance, int layerMask)

参数:射线,碰撞信息,距离,要发生碰撞的层

 

Raycast(Vector3 origin, Vector3 direction, float maxDistance, int layerMask)

参数:起点,方向,距离,要发生碰撞的层

 

Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance)

参数:起点,方向,碰撞信息,距离

 

Raycast(Vector3 origin, Vector3 direction, float maxDistance, int layerMask)

参数:起点,方向,距离,要发生碰撞的层

 

RaycastHit[] RaycastAll(Ray ray, float maxDistance, int layerMask)

返回所有物体的碰撞信息

 

关于2D射线检测和检测碰撞到所有物体

RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask, float minDepth)

参数:起点,方向,距离,要发生碰撞的层,深度

 

RaycastHit[] RaycastAll(Ray ray, float maxDistance, int layerMask)

返回所有物体的碰撞信息

你可能感兴趣的:(UnityApi)