之前挺长一段时间不务正业,现在看着unity课设要截止了,就想着干点正事。很早以前接触到鼠标点击一个地点然后人物跑过去的算法,当时看着觉得好麻烦啊,嘛,没有个基础谁看着一大堆代码都头疼(也许是我太菜了吧)。
于是乎我就打算从最简单的写起,如果以后有更深入的应用,我还会继续加。
1.定义射线
unity的射线其实与我们数学上学到的射线是一样的。定义:
Ray ray = new Ray(起点, 发射方向);
其中起点和发射方向均为向量(Vector3类型)。
举个例子:如果你想制作一条从A射向B的射线,那么起点就是A,发射方向是B-A。位置可以用A.transform.position来定义。
2.检测碰撞
通过发射一条射线,记录下射线击中的物体。注意这里的物体需要添加碰撞器。
RaycastHit hit;//hit是被射线击中的物体
if (Physics.Raycast(ray, out hit, Mathf.Infinity))//ray是前面的射线,最后一项是射线长度(这里为无限)
{
// 如果碰撞,打印碰撞物体信息
Debug.Log("碰撞对象: " + hit.collider.name);
// 在场景视图中绘制射线
Debug.DrawLine(ray.origin, hit.point, Color.red);
}
至于前面提到的鼠标点击屏幕实现交互的,涉及了相机坐标与世界坐标的变换啥的,我暂时还没用到,以后碰到了还会来(你)。