• //3D射线 if (Input.GetMouseButton(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线 RaycastHit hitInfo; if (Physics.Raycast(r
    //3D射线 
    if (Input.GetMouseButton(0))
            {
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线
                RaycastHit hitInfo;
                if (Physics.Raycast(ray, out hitInfo))
                {
                    Debug.DrawLine(ray.origin, hitInfo.point);//划出射线,只有在scene视图中才能看到
                    GameObject gameObj = hitInfo.collider.gameObject;
                    Debug.Log("click object name is " + gameObj.name);
                }
            }
    
    
    </pre><p><br /></p><p>//2D射线</p><p></p><pre code_snippet_id="1697724" snippet_file_name="blog_20160603_4_2994014" name="code" class="csharp">        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition),Vector2.zero);
            if(hit.collider != null)
            {
                Debug.Log("Target Position: " + hit.collider.gameObject.name);
            }





    2D射线只会碰撞到      Submarine  层

     RaycastHit2D hit = Physics2D.Raycast(worldpos, Vector2.zero, 100, 1 << LayerMask.NameToLayer("Submarine"));


    //UI射线

    public void OnDrag (PointerEventData eventData) {
    		transform.position = Camera.main.ScreenToWorldPoint(eventData.position);
    <span style="white-space:pre">		</span>GraphicRaycaster gr = GetComponentInParent<Canvas> ().GetComponent<GraphicRaycaster> ();
    		List<RaycastResult> results = new List<RaycastResult> ();
    
    		gr.Raycast (eventData, results);
    
    		foreach (RaycastResult result in results) {
    			Debug.Log (result.gameObject.name);
    		}
    
    	}
    



    展开全文
  • Unity2D射线出现的问题

    2019-08-16 15:50:28
    1.Unity2D射线 Unity2D的射线和3D的不同,他的射线会穿过精灵获取到多个精灵; 最大问题 1.在我目前使用的2017.2.4中2D的射线是无法打到加载2D刚体的精灵的.即.你需要射线打到某物体时,该物体不能有刚体.此问题现在的...

    Unity 2D的一些小问题

    1.Unity2D射线

    Unity2D的射线和3D的不同,他的射线会穿过精灵获取到多个精灵;
    

    最大问题
    1.在我目前使用的2017.2.4中2D的射线是无法打到加载2D刚体的精灵的.即.你需要射线打到某物体时,该物体不能有刚体.此问题现在的解决方案博主上网查了很多.暂无解决方案.博主是先去掉刚体 在射线大宗之后再使用代码添加刚体组件

    展开全文
  • 2D射线不会忽略起点所在的碰撞器,3D射线会自动忽略起点所在的碰撞器

    2D射线不会忽略起点所在的碰撞器,3D射线会自动忽略起点所在的碰撞器

    展开全文
  • Unity 射线检测(2D&&3D)

    2019-07-29 15:20:05
    3D物体检测: if (Input.GetMouseButtonUp(0)) { // 点击鼠标左键抬起时发射一条射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if...

    被点击的物体上必须有collider组件
    3D物体检测:

    //鼠标右键点击
    if (Input.GetMouseButtonUp(1))
            {
                // 点击鼠标左键抬起时发射一条射线
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hitInfo;
                if (Physics.Raycast(ray, out hitInfo))
                {
                    Debug.Log("click object name is ---->" + hitInfo.collider.gameObject.name);
                }
    
                //在半径为5的球形范围内的所有3d物体都会被检测到
                Collider[] colliders = Physics.OverlapSphere(Vector3.zero, 5.0f);
                if (colliders.Length > 0)
                {
                    for (int i = 0; i < colliders.Length; i++)
                    {
                        Debug.Log("第二种方式---click object name is ---->" + colliders[i].gameObject.name);
                    }
                }
            }
    

    2D物体检测

    //左
    if (Input.GetMouseButtonUp(0))
            {
                // 第一种方法,与3d检测类似
                RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
                if (hit.collider != null)
                {
                    Debug.Log("clicked object name is ---->"+ hit.collider.gameObject);
                }
    
                // 第二种方法,overlap检测物体重叠的点
                Collider2D[] collider2Ds = Physics2D.OverlapPointAll(Camera.main.ScreenToWorldPoint(Input.mousePosition));
                if (collider2Ds.Length > 0)
                {
                    for (int i = 0; i < collider2Ds.Length; i++)
                    {
                        Debug.Log("overlap object point,The name is ---->" + collider2Ds[i].gameObject.name);
                    }
    
                    //foreach (Collider2D item in collider2Ds)
                    //{
                    //    Debug.Log("overlap object point,The name is ---->" + collider2Ds[i].gameObject.name);
                    //}
                }
            }
    

    demo链接

    展开全文
  • unity2D 射线检测

    2019-11-27 17:14:08
    在网上搜了好多关于2D射线检测的,点击屏幕,利用射线检测点击到的物体是否是我想要的物体(物体上添加了2d碰撞器)。 在网上搜到的都是一些这样的答案: RaycastHit2D hit = Physics2D.Raycast(Camera.main....

    在网上搜了好多关于2D射线检测的,点击屏幕,利用射线检测点击到的物体是否是我想要的物体(物体上添加了2d碰撞器)。

    在网上搜到的都是一些这样的答案:

    RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
     if (hit.collider != null)
     {
         Debug.Log("clicked object name is ---->"+ hit.collider.gameObject);
     }           
               

    但是结果没有什么用,根本没反应,最后翻墙google了一下,找到了一个正确答案,这里记录一下:

    void Update () {
    
            if (Input.GetMouseButtonDown(0))
            {
                Vector3 mousePos = Input.mousePosition;
                mousePos.z = 10;
    
                Vector3 screenPos = Camera.main.ScreenToWorldPoint(mousePos);
    
                RaycastHit2D hit = Physics2D.Raycast(screenPos, Vector2.zero);
    
                if (hit)
                {
                    print(hit.collider.name);
                }
            }   
    }

     

    展开全文
  • Unity中的2D射线检测

    2019-11-25 14:22:05
    需要有2d碰撞器 private void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit2D hit = Physics2D.Raycast(this.transform.position, Camera.main.ScreenToWorl...
  • unity3d 2d 射线检测

    2015-09-01 18:39:10
    Physics2D.LinecastNonAlloc 直线投射不分配内存 C# ⇒ static int LinecastNonAlloc(Vector2 start, Vector2 end, RaycastHit2D[] results, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf....
  • 使用射线功能制作点击物体获取物体...3D射线检测,Camera 在正交模式与透视模式皆可使用 void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics....
  • Unity3D射线的方向

    2019-08-05 15:20:16
    使用Unity3D的屏幕射线时,会得到两个值,一个是Origin,是射线的源点,另一个是Direct,代表了射线的方向,这两个值均为Vector3类型。 根据数学知识,射线的表示为P(t)=Origin+t*Direct,你以为就这么容易吗,NO!!...
  • 本课程使用Unity3d开发软件和C#编程语言,从零开始逐步完成一个2D拼图游戏项目。在本课程中,你可以了解并学习到游戏工程的创建和文件结构的维护、Unity3D射线检测机制、插值插件Itween的使用、游戏数据的离线保存...
  • 射线3D世界中一个点向一个方向发射的一条无终点的线。在发射的轨迹中,一旦与其他物体发生碰撞,它就会停止。 在API文档中Ray是一个结构体【Struct】 (对于没有语言基础的同学来说理解这个
  • 本课程使用Unity3d开发软件和C#编程语言,从零开始逐步完成一个2D拼图游戏项目。在本课程中,你可以了解并学习到游戏工程的创建和文件结构的维护、Unity3D射线检测机制、插值插件Itween的使用、游戏数据的离线保存...
  • 下载地址 Live2D下载地址 ...将此导入Unity后Live2D会自动处理配置文件,并在Runtime文件夹下生成Liv2D的预制体,expressionList表情列表和fadeMotionList动作列表,列表的引用关系Live2D已自动处理。 Li
  • 这几天我突发奇想 想要实现一个2D的钩绳枪 但是实现过程可以说是十分坎坷了 遇到了好多意料之外的问题 ...2D射线3D的用法几乎不同 所以花了一段时间 Physics2D.Raycast(发射位置, 发射方向,距离); 这个很...
  • Unity2D物理引擎是基于Box2D的,嘛,在这一点上cocos也不例外,其他的软件要做2D物理效果的话基本上也会用该引擎。Box2D本身是一个免费开源的物理引擎,由C++编写而成。   https://github.com/erincatto/Box2D,...
  • [Unity3D]射线碰撞检测+LayerMask的使用 转射线射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 。 用途:在unity中射线应用范围比较广, 多用于碰撞检测...
  • 这里是一个简单的跳跃,5.0和其他版本貌似不一样,并且,再起跳功能做的不完全。 不过一个基本的思路在这里。...LineCast 两点之间产生射线,去和某个碰撞器发生碰撞,触发了碰撞器,返回一个真...
  • 本课程使用Unity3d开发软件和C#编程语言,从零开始逐步完成一个2D拼图游戏项目。在本课程中,你可以了解并学习到游戏工程的创建和文件结构的维护、Unity3D射线检测机制、插值插件Itween的使用、游戏数据的离线保存...
  • 射线射线3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 。 用途:射线应用范围比较广, 多用于碰撞检测(如:子弹飞行是否击中目标)、角色移动等 等。   ...
  • Unity中可视化射线

    2019-07-08 17:38:35
    //三个参数分别为:射线发射起始位置,射线方向,颜色 Debug.DrawRay(rayDown.position, Vector2.down * 1f, Color.blue);
1 2 3 4 5 ... 20
收藏数 1,512
精华内容 604
热门标签