前言:
在線與球專案中,為了避免讓球跑出視線外,我加入了4個box collider,分別將他們座標設定對應於攝影機中的上下左右,為了達到響應式的設計,我將讀取螢幕的長寬,並且轉換成遊戲內的世界座標。
首先,需要幾個背景知識:
- Unity中有幾個座標空間,世界空間(World Space)、螢幕空間(Screen Space)、Viewport,各自獨立。
- 他們可以透過Function或叫Unity Scripting Api進行轉換。例如螢幕空間轉換到世界空間:ScreenToWorldPoint(螢幕空間) {get :世界}。
- 世界座標為在遊戲畫面中,所建立的物件座標 ;螢幕上的座標為解析度,單位為像素。
例如1K畫質,畫面座標為左下(0,0)~右上(1024,768),例如上圖紅線 ;Viewport為將螢幕空間標準化轉換成最大到(1,1)的空間,因此無論畫質多高,最大都是(1,1)。 - 上圖中,白色外框為攝影機的邊界,我將攝影機中央設定為世界座標(0,0)位置。黃球與紅球為遊戲物件請忽略。
- 重要:因為我將攝影機中央設定為世界空間(0,0,0)位置,因此螢幕空間(0,0,0)不等於世界空間(0,0,0)。
- 重要:此示範專案是2D,攝影機的投影是正投影而非透視,若為透視會發生意料之外的情形。
實作:
- 1~4 :設定邊界位置座標。
- 5~8:設定邊界寬高,符合螢幕大小。
留言
張貼留言