[unity]屏幕坐标转世界坐标


1.使用ScreenToWorldPoint将获取的屏幕位置直接转成世界坐标:

 

            1:获取的屏幕坐标Input.mousePosition是一个2d坐标,z轴值为0,这个z值是相对于当前camera的,为零表示z轴与相机重合了,因此给ScreenToWorlfdPoint传值时,不能直接传Input.mousePosition,否则获取的世界坐标永远只有一个值;

 

            2:为了解决坑1,便使传入的z轴值,那么传什么值呢,可以取当前相机的z轴值绝对值,大概意思就是距离相机的距离,生成点的位置最后会在一个平面(因为传入的z值固定了),比较适合一个平面内取点

 

2.射线检测,取得屏幕坐标,发射射线,取得碰撞信息,比较准确,射线碰到那个有碰撞器的位置,就返回这个位置

 

 

Ray ray= mainCamera.ScreenPointToRay(screenPos);

            RaycastHit hit;

            bool ishit=Physics.Raycast(ray,out hit);

            if (ishit)

            {

                Vector3 spacePos = hit.point;

                print("screenPos:" + screenPos);

                print("spacePos:" + spacePos);

 

           }

 

原文链接:https://blog.csdn.net/qq_38806355/article/details/82938553


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM