2017-09-23 44 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

相關問題