【unity】射线(Ray)以及一点点应用

之前挺长一段时间不务正业,现在看着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);
    }

至于前面提到的鼠标点击屏幕实现交互的,涉及了相机坐标与世界坐标的变换啥的,我暂时还没用到,以后碰到了还会来(你)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值