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象限里会看到不同的结果

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

时间: 2024-10-11 21:29:46

unity3d之射线检测的相关文章

Unity3D 之射线检测

这里来记录下射线检测的相关内容: 射线检测故名就是通过射线去检测是否和碰撞器产生了交集,和碰撞器与碰撞器发生交集一样,会返回一个真. 射线的用法很多:比如检测是否跳跃,通过向地面投射射线控制在地面时候可以跳起. 射击游戏中可以通过定长射线去判断目标物体是否被击中,等 主要用到的工具类是: Physics RaycastHit 光线投射碰撞 Ray 射线 第一种是: Physics.Linecast 线性投射 从开始位置到结束位置做一个光线投射,如果与碰撞体交互,返回真. Debug.DrawLi

【Unity3D】枪战游戏—发射子弹、射线检测

一.子弹的碰撞检测: 因为子弹的移动速度非常的快,那么如果为子弹添加一个collider,就有可能检测不到了. 因为collider是每一帧在执行,第一帧子弹可能在100米处,那么下一帧就在900米处了, 那么中间的障碍物就不能被检测到了. 所以就需要射线检测: 在每一帧的执行,都向上一帧发射射线,不断地检测射线中是否有穿过的障碍物体 1 void Update () { 2 transform.Translate (Vector3.forward * Speed * Time.deltaTim

unity 射线检测

unity中射线检测时非常实用也经常实用的一种手段.下面讲解一下射线检测问题. 1)Ray 根据射线端点和射线的方向定义一条射线 Ray ray= new Ray(transform.position, transform.forward); 定义一个包含射线投射信息的变量RaycastHit hit,并进行射线检测Physics.SphereCast RaycastHit hit; if(Physics.SphereCast(ray,1f,out hit)) { if(hit.distance

【转】 [UnityUI]UGUI射线检测

http://blog.csdn.net/lyh916/article/details/50947026 1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测:反面展示时,不会接收到射线检测:否则,正反面展示都会接收到射线检测 Bloc

UGUI射线检测

1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测:反面展示时,不会接收到射线检测:否则,正反面展示都会接收到射线检测 Blocking Objects:屏蔽指定类型的(物理)对象,使它们不参与射线检测.渲染模式不为ScreenSpa

反复横跳的瞄准线!从向量计算说起!基于射线检测的实现!Cocos Creator!

最近有小伙伴问我瞄准线遇到各种形状该怎么处理?如何实现反复横跳的瞄准线?最近刚好在<Cocos Creator游戏开发实战>中看到物理系统有一个射线检测,于是,基于这个射线检测,写了一个反复横跳的瞄准线效果.一起往下看吧!文章底部获取完整项目! 国际惯例,先上最终效果! 在讲解之前我们需要一些向量的知识,简单的介绍一些吧! 向量的加法,OA + AB = OB 向量的点乘,表示一个向量在另一个向量上的投影,是个标量,有正负之分.向量夹角小于 90度 为正数,等于 90度 为 零,大于 90度

canvas射线检测

public class someclass:monobehaviour { public EventSystem eventssystem;    public GraphicRaycaster gra;    /// <summary>    /// 射线检测    /// </summary>    /// <param name="Name"></param>    /// <returns></returns&

Unity LineRenderer 射线检测 激光攻击

在进行激光攻击的脚本编写前,我们需要先进行一定程度的想象,激光和普通的远程攻击有哪些不太一样的地方. 正常的远程攻击例如子弹,箭矢,技能波等,都有明确的弹道,不可能同时命中多个敌人,而且一般只要命中敌人后就会被销毁.(特殊技能除外) 但激光可以认为是一种持续性的范围伤害,只是它的范围(长度)是不固定的,在激光的发射阶段,它会在第一个被命中的目标或障碍物处截断. 一旦整个激光成型后,一般来说,它将不再被运动的目标截断,反而是依靠它已经生成的光柱将目标弹开并造成伤害. 当然,如果之前被命中的目标或障

Unity3D射线检测。

int groundLayerIndex = LayerMask.GetMask (Tags.Ground); Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); RaycastHit hitInfo; if(Physics.Raycast (ray, out hitInfo, 200, groundLayerIndex)) { Vector3 target = hitInfo.point; target.y = trans