今天向大家介绍一下,如何初步的用Unity3D从摄像机到鼠标的射线,也就是鼠标检测到Unity3D世界中的游戏对象!
如何才能使射线检测到游戏对象呢,只有一个条件,那就是必须添加collider组件,否则你是绝度检测不到,你想要检测的物体的!
如果你还是检测不到Unity3D世界里的游戏对象的话! 真相只有一个"你没有在Update里调用该方法"!
好了,到了代码的部分的,请大家指教,哈哈哈哈哈哈哈!using UnityEngine;
using System.Collections;
/// <summary>
/// 功能:数遍检测寻找Unity3D世界里的游戏对象
/// 创建者: VioletTD
/// 创建时间:2015年11月3日 21:28
/// 感谢: Me加油!!
/// </summary>
public class RayToFindTest : MonoBehaviour {//射线查找的测试脚本
void Update () {
RayToFindMethod ("Player");//
}
void RayToFindMethod(string tags)//定义一个私有的,无返回值,有参数的方法 参数为你想找到的游戏对象的标签(Tag)
{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);//实例化从摄像机到鼠标的摄像
RaycastHit hit;//这个为射线命中的点
if (Physics.Raycast (ray,out hit)) {//物理静态类中的光线投射方法 -> 意义:射线投射出 "得到射线命中的点(hit)"
if (hit.transform.CompareTag(tags)) {//如果射线命中的点的标签(Tag)值为 tags -> 即:外部传入的参数(你想要找到的游戏对象的标签) 并把hit射线命中的点的类型转换为transform类型
Debug.Log (hit.transform.name);//为真执行输出射线命中点的名字
}
}
}
}
using UnityEngine;
using System.Collections;
/// <summary>
/// 功能:数遍检测寻找Unity3D世界里的游戏对象
/// 创建者: VioletTD
/// 创建时间:2015年11月3日 21:28
/// 感谢: Me加油!!
/// </summary>
public class RayToFindTest : MonoBehaviour {//射线查找的测试脚本
void Update () {
RayToFindMethod ("Player");//
}
void RayToFindMethod(string tags)//定义一个私有的,无返回值,有参数的方法 参数为你想找到的游戏对象的标签(Tag)
{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);//实例化从摄像机到鼠标的摄像
RaycastHit hit;//这个为射线命中的点
if (Physics.Raycast (ray,out hit)) {//物理静态类中的光线投射方法 -> 意义:射线投射出 "得到射线命中的点(hit)"
if (hit.transform.CompareTag(tags)) {//如果射线命中的点的标签(Tag)值为 tags -> 即:外部传入的参数(你想要找到的游戏对象的标签) 并把hit射线命中的点的类型转换为transform类型
Debug.Log (hit.transform.name);//为真执行输出射线命中点的名字
}
}
}
}
谢谢大家的支持和鼓励!