我是靠谱客的博主 负责小松鼠,最近开发中收集的这篇文章主要介绍Unity API Raycast射线的使用射线检测之基本使用射线检测之重载方法关于2D射线检测和检测碰撞到所有物体,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

射线检测之基本使用

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

射线的基本碰撞检测

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")

 

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)

返回所有物体的碰撞信息

最后

以上就是负责小松鼠为你收集整理的Unity API Raycast射线的使用射线检测之基本使用射线检测之重载方法关于2D射线检测和检测碰撞到所有物体的全部内容,希望文章能够帮你解决Unity API Raycast射线的使用射线检测之基本使用射线检测之重载方法关于2D射线检测和检测碰撞到所有物体所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部