2017-09-23 49 views
0

我正在尝试制作2D游戏。 我有4个gameobjects,我想放置在屏幕的每个角落,即当我在手机上运行我的应用程序时,它应该在每个角落都可见。 所以我在剧本所做的是,有人可以向我解释2D统一坐标系吗?

//GameObject 1 script 
void Start(){ 
    transform.position = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, Screen.height)); 
} 

//GameObject 2 script 
void Start(){ 
    transform.position = Camera.main.ScreenToWorldPoint(new Vector2(0, 0)); 
} 

//And same for other 2 gameobjects... 

,但我不是我的屏幕上看到任何对象。

回答

1

你这样做是正确的方式,但可能会有一些时刻,你应该检查出:

  1. 确保你使用正确的相机翻译从屏幕到世界坐标]
  2. 确保物体的z位置位于相机的裁剪平面内(它必须在相机的近裁剪平面和相机的远裁剪平面之间)。如果游戏对象实际上位于裁剪平面内,您可以在编辑器中开始游戏并查看场景视图。
  3. 你正在做的是放置你的游戏对象,以便每个游戏对象的中心将在屏幕的角落。而且它不像gameobject会适合角落。如果你想放置gameobject,以便它们适合角落(不是它们的中心将放置在角落),你应该计算每个gameobject的偏移量。您可以为此用户renderer.bound
  4. 确保您的相机渲染了游戏对象所在的图层。您可以在相机的剔除面具中进行检查。
+0

感谢您的回复。我实际上想要在每个角落放置游戏对象的中心。作为一个实验,我打印出这个信息 - print(“Screen to World POINT:”+ Camera.main.ScreenToWorldPoint(new Vector2(0.0f,0.0f))); 结果是(-8.5f,-5.0f,-10.0f) 这是如何计算的?我的屏幕分辨率为(1024,600)。 你能帮忙吗? – s3e3

+0

@ s3e3你在控制台中看到的是统一的坐标。 Unity不处理像素,它处理它自己的坐标系。 (0,0)是屏幕的左下角。它不处理屏幕的像素。您可以通过Camera.pixelWidth /.pixelHeight获得屏幕的像素大小。如果你想undist和映射坐标团结的单位看看这里:https://gamedev.stackexchange.com/questions/130047/how-does-the-unity-coordinate-system-map-to-screen-pixels – vmchar

相关问题