方法原型和参数说明:
public static bool Raycast(Vector3 origin(起点), Vector3 direction(终点), out RaycastHit hitInfo(返回的信息), float maxDistance(距离),int layerMask(层级),QueryTriggerInteraction queryTriggerInteraction(是否命中触发器));
1.示例代码:
// 不限制距离
public Transform transform1;
RaycastHit hit;
void FixedUpdate()
{
// 后面的参数没写是检测所有层级 和距离命中的状态
if (Physics.Raycast(transform.position, transform1.transform.position, out hit))
print("找到物体的距离是: " + hit.distance);
}
如图所示:
2.限制距离在距离范围内检测到同层级返回物体为真,检测不到返回为假
public Transform transform1;
RaycastHit hit;
void FixedUpdate()
{
public LayerMask mask;
// 检测层级和和距离
if (Physics.Raycast(transform.position, transform1.transform.position, out hit,200.0f,mask))
print("找到物体的距离是: " + hit.distance);
}
3.通过Ray,使用示例可以通过这函数找到鼠标位置,进行射击 发射等等 游戏操作
public static bool Raycast(Ray ray(射线的起点和方向), float maxDistance = Mathf.Infinity(距离), int layerMask = DefaultRaycastLayers(层级),QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal(是否命中触发器));
示例代码:
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, 100))
print("什么鬼");
}
输出结果:
4.Ray 的不同参数
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray,out hit, 100))
Debug.DrawLine(ray.origin, hit.point,Color.red);
}
如下图:
以上根据官网示例,个人操作所得 ,如有雷同纯属巧合