问题:在《英雄联盟》里,你的鼠标在地图上点击在了哪里,你的英雄就会走到你所点击的地方,那么,用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象限里会看到不同的结果
篇外:可添加一方法,方便测试,如此一来,就只有鼠标点击一下,才会打印一条信息。
时间: 2024-10-11 21:29:46