首页 > 代码库 > unity3d之射线检测

unity3d之射线检测

问题:在《英雄联盟》里,你的鼠标在地图上点击在了哪里,你的英雄就会走到你所点击的地方,那么,用u3d如何来实现这个小小的功能呢???

解决方案:做射线检测。首先你要准备两个东西(1):摄像机(这是射线的出发点)

                         (2):“碰撞信息”(用以记录射线与对象所产生的碰撞点的信息)

在u3d中创建一个空工程并添加一个c#脚本:RaycastTest。添加好我们刚才所说的两个东西:“摄像机”、“碰撞信息”,并初始化他俩(摄像机稍后再初始化)

技术分享

将该脚本挂在摄像机(Main Camera)上,并用Maincamera自身去赋值public变量camera

技术分享

随后创建一个plane对象和cube对象(该对象设置缩放(0.2,0.2,0.2),以便放在世界坐标系原点进行参考),把两者坐标都设置为(0,0,0)

技术分享

继续在update里面写代码:

技术分享

现在运行工程,可以看到下面我的测试结果:此时我是将鼠标放在cube顶面的,因为cube在世界坐标系远点,所以看到左侧所打印出来的结果里x,z都是0,而y大于0(因为cube的顶面在世界坐标系y轴的上方)

技术分享

到此,我们就能获得鼠标所点击的点在世界坐标系里的位置信息,讲鼠标放在我所标注的1,2,3,4象限里会看到不同的结果

 

篇外:可添加一方法,方便测试,如此一来,就只有鼠标点击一下,才会打印一条信息。

技术分享

 

unity3d之射线检测