
根据深度纹理获取世界坐标很常用,可以实现很多有用的功能,比如简单的雾 / 扫描线等
主要参考
>
至于出现相同的坐标点,是你转换的位置不对;
ScreenToWorldPoint()参数是一个Vector3,其中Vector3x,Vector3y是屏幕上的坐标,而Vector3z则是相对于相机的深度。
前3个坐标为Z轴零,也是就是相对于相机朝向距离为0 的位置,其实就是相机的位置。所以3个坐标是一样的,就是相机的位置。
当前这种情况,你需要给需要转换的坐标一个深度。
在Unity中获取鼠标在Canvas的坐标非常简单,只需要使用InputmousePosition函数即可获取鼠标在Canvas上的坐标。该函数返回一个Vector3,其中包含X,Y和Z三个坐标,其中X和Y分别表示鼠标在Canvas上的X和Y坐标。另外,你还可以使用CameramainScreenToWorldPoint函数来将屏幕坐标转换为世界坐标,以便在游戏中使用鼠标坐标。
直接用WorldToScreenPoint方法[csharp] view plain copypublic Camera mycamera;//要转化到的目的摄像机,通常canvas在这个摄像机下(即canvas的render mode设置为这个摄像机) Image kongjian;//自己要获取屏幕坐标的控件,可以是image,也可以是button等等 float x=mycameraWorldToScreenPoint(kongjiantransformposition)x; float y=mycameraWorldToScreenPoint(kongjiantransformposition)y; //x,y即为控件在屏幕的坐标cameraWorldToScreenPoint()方法返回的是一个position类型 是vector3类型,camera为要转化到的目标摄像机,传入的参数为控件的世界坐标 以下会发现得到的值不尽如人意,原因在于,这些
GetComponent<RectTransform>()sizeDelta
或者GetComponent<RectTransform>()rectsize
GetComponent<RectTransform>()sizeDelta
或者GetComponent<RectTransform>()rectsize
方法得到的宽高受到(相对于父物体)锚点的影响,所以楼主自行测试一下就会得到自己想要的答案
以上就是关于unity 从深度纹理重建世界坐标全部的内容,包括:unity 从深度纹理重建世界坐标、unity3d坐标问题!求解答~可再开问题增加悬赏!急!在线等、unity获取鼠标在canvs的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)