• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

Unity中Camera.ScreenToWorldPoint运用解析

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0404/439.html

Unity中Camera.ScreenToWorldPoint运用解析

 
Unity中App开发培训的Camera.ScreenToWorldPoint办法承受一个Vector3的参数就能够转化成世界坐标,不理解的就看看下文对它的引见吧。
 
Camera.ScreenToWorldPoint
Vector3 ScreenToWorldPoint(Vector3 position);
 
将屏幕坐标转换为世界坐标。
如何转换?假设给定一个所谓的屏幕坐标(x,y,z),如何将其转换为世界坐标?
 
首先,我们常州网站开发培训要了解摄像机是如何渲染物体的:
 
摄像机对游戏世界的渲染范围是一个平截头体,渲染边境是一个矩形,用与near clippingplane或者far clippingplane平行的平面截取这个平截头体,能够取得无数个平行的矩形面,也就是我们看到的屏幕矩形。离摄像机越远,矩形越大,离摄像机越近,矩形越小。所以,同样大小的物体,随着离摄像机越来越远,相关于对应屏幕矩形就越来越小,所看起来就越来越小。
 
在屏幕上,某个像素点相关于屏幕矩形的位置,能够对应于游戏世界中的点相关于某个截面的位置,关键在于这个点在哪个截面上,也就是说,关键在于这个截面离摄像机有多远!
 
在ScreenToWorldPoint这个办法中,参数是一个三维坐标,而实践上,屏幕坐标只能是二维坐标。参数中的z坐标的作用就是:用来表示上述平面离摄像机的间隔。
 
也就是说,给定一个坐标(X,Y,Z),
首先截取一个垂直于摄像机Z轴的,间隔为Z的平面P,这样不论X,Y怎样变化,返回的点都只能在这个平面上;
然后,X,Y表示像素坐标,依据(X,Y)相关于屏幕的位置,得到游戏世界中的点相关于截面P的位置,我们常州企业培训也就将屏幕坐标转换为了世界坐标。
 
官网文档中的说法:
Camera.ScreenToWorldPoint
Vector3 ScreenToWorldPoint(Vector3 position);
 
Description
Transforms position from screen space into world space.
Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
    void OnDrawGizmosSelected() {
        Vector3 p = camera.ScreenToWorldPoint(new Vector3(100, 100, camera.nearClipPlane));
        Gizmos.color = Color.yellow;
        Gizmos.DrawSphere(p, 0.1F);
    }
 

上篇:上一篇:U3D中关节(joint)运用
下篇:下一篇:没有了