說實話,我很遺憾在Unity中的世界,屏幕和視口座標。
我的問題很簡單:在2D遊戲中,無論分辨率和屏幕高寬比是多少,我怎樣才能將對象放置在左下角?不同分辨率/寬高比的屏幕上的位置對象
0
A
回答
2
這是一個有點含糊你的描述,但我覺得你講的這一點:
Vector3 screenPos = new Vector3(x,y,z);
camera.ScreenToWorldPoint(screenPos);
作爲一個側面說明,對於2D團結的具體算法,搜索之謂也。
對於正投影檢查這種統一空間,這將幫助您:
http://answers.unity3d.com/questions/501893/calculating-2d-camera-bounds.html
1
我看沒有人會跟進這一點。讓我們先看一些術語: Camera.main =正在看你的遊戲世界的主相機 「遊戲世界」=你繪製的整個遊戲地圖 世界點=遊戲世界中絕對的,獨特的位置。可以是2D或3D(X,Y,Z) 屏幕分=二維x,y位置的像素在屏幕上
所以,當你想放置的物體(ietransform它的位置),你是什麼真正做的是把它放在遊戲世界的某個地方。如果相機碰巧看到世界上的那個位置,那麼它會出現在屏幕上。
要想知道世界上哪些部分當前正在屏幕上,您必須將屏幕點轉換爲世界點。所以......假設你的對象的大小是20×20,試試這個:
//Attach this script to the item you want "pinned" to the bottom, left corner of the screen
void Update() {
//fetch the rectangle for the whole screen
Rect viewportRect = Camera.main.pixelRect; //again, this has nothing to do with the World, just the 2D screen "size", basically
//now, let's pick out a point on the screen - bottom, left corner - but leave room for the size of our 20x20 object
Vector3 newPos = new Vector3(viewportRect.xMin + 20, Camera.main.pixelHeight - 20, 0);
//now calculate where we need to place this item in the World so that it appears in our Camera's view (and, thus, the screen)
this.transform.position = Camera.main.ScreenToWorldPoint(newPos);
}
我98%肯定這是所有準確的信息,但如果有人看到一個錯誤,請指出來。
+0
這似乎是正確的。我對Camera.main.pixelRect的理解是它在整個屏幕上可見的矩形。這不一定是屏幕的全尺寸,也不一定是從屏幕的左下角開始。最好使用Screen.Width/Screen.Height,並使用百分比偏移量而不是絕對值來更好地處理多個分辨率。 –
相關問題
- 1. HTML:使圖像填滿屏幕,保留不同分辨率下的寬高比
- 2. 所有屏幕分辨率的相同位置上的圖像
- 3. 分辨率和寬高比
- 4. Android:不同分辨率的屏幕中的按鈕位置
- 5. Android:不同分辨率的屏幕上的位圖縮放
- 6. 不同的屏幕分辨率的CSS?
- 7. Win 8 MonoGame - 遊戲分辨率與屏幕分辨率對比
- 8. Allegro 5遊戲:如何設置適合屏幕高寬比的分辨率?
- 9. 不同的屏幕分辨率在css
- 10. 在不同的屏幕分辨率
- 11. 如何使用屏幕分辨率設置div高度/寬度?
- 12. 設置控件相對於Silverlight屏幕分辨率的寬度
- 13. UIView的Uiimage:高於屏幕分辨率?
- 14. pyglet的屏幕分辨率提高了
- 15. 針對不同屏幕分辨率的不同設計
- 16. Android針對不同屏幕分辨率的不同佈局
- 17. 位置的UILabel的面積相對於屏幕分辨率
- 18. Android:屏幕分辨率的百分比版面高度
- 19. 高分辨率屏幕的不同佈局?
- 20. 屏幕分辨率
- 21. 屏幕分辨率
- 22. 屏幕分辨率
- 23. 屏幕分辨率
- 24. 屏幕分辨率
- 25. 屏幕分辨率
- 26. 爲Android開發高分辨率屏幕,但支持低分辨率屏幕
- 27. Android的屏幕分辨率
- 28. Android的屏幕分辨率
- 29. C++的屏幕分辨率
- 30. 打印在比屏幕分辨率高dpi的表單
說實話,我不太瞭解你的代碼。假設我們有一個名爲Player的對象。無論縱橫比和分辨率如何,您如何將其位置改變到左下角? – BanzaiTokyo
@BanzaiTokyo,首先可以肯定的是,您是否使用正交相機投影或透視? – tweellt
我使用正字法 – BanzaiTokyo