从开始点发射一条射线,按照指定的方向,和指定的长度(不指定则为无限长的),判断有没有与其它的碰撞体发生碰撞。
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)
返回所有物体的碰撞信息
RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask, float minDepth)
参数:起点,方向,距离,要发生碰撞的层,深度
RaycastHit[] RaycastAll(Ray ray, float maxDistance, int layerMask)
返回所有物体的碰撞信息