2017-06-24 65 views
0

我完全困惑於如何正確調整基於風景的背景圖片的大小。截至目前,我在做GameScene(size: self.frame.size),並且我打印出屏幕的大小,所以我知道用什麼尺寸來製作背景,結果我的背景應該是1024x768,但這看起來不像橫向尺寸?所以我做了我的背景1024x768,但整個圖像不適合我的iphone,因爲它的景觀,因爲iphone lanscape尺寸不是1024x768。我如何製作背景,看起來與我的iphone的尺寸爲1:1?我能想到的唯一方法是,如果我設置了GameScene(size: CGPoint(x: 1334, y: 750)),但是不會被其他設備搞砸了?什麼是最好的方法來解決這個問題?我有一位藝術家將爲我做一個背景,但我不知道給他什麼尺寸。SpriteKit - 無法理解要製作背景的尺寸

+0

在視圖控制器出現之前,在視圖控制器中正確設置場景的縮放模式和大小。 –

回答

2

在處理Sprite Kit的場景時,儘量不要關注屏幕大小,因爲屏幕大小不再是一個因素(現在這不是100%的絕對事實,這是一個通用規則)

相反,把你的SKScene看作是一個虛擬屏幕。你的SKScene的大小是你的SKScene的「分辨率」,並且操作系統將在後臺工作以找出如何將1個虛擬像素(從這裏開始我們將稱之爲點)轉換爲屏幕像素(這裏稱爲out作爲像素)

現在只有一種特殊情況,操作系統將更改分辨率(場景大小)以匹配屏幕,即.resizeFill其他3將永遠不會改變您的分辨率。

.aspectFill.aspectFit將確保您指向像素轉換保持和相等的寬度和高度(例如,1點可以等於4×4像素)的唯一差別是.aspectFill將擴大到填滿整個屏幕,這意味着過量點將被渲染在原始屏幕邊界之外[so(0,0)可能位於最左邊像素的左邊20像素處,因此不可見],並且.aspectFit將填充,直到它碰到屏幕邊界,留下黑色條以填充未使用的像素。

現在.fill不保持等寬和高的像素點比例,並且在4:3轉到16:9屏幕的情況下,您會注意到指向像素的點將是5:4,因爲16:9屏幕比4:3寬25%。這會讓你產生不良影響。

所以,當處理你的遊戲時,你需要弄清楚所需的效果。如果將場景大小設置爲1024x768,則所有非視網膜iPad都將具有1:1的像素點比例,其中視網膜的像素點比例爲2:1。對於iphone 5來說,每一點(iphone是1168,你的場景是1024,所以你是1168/1024),然後是768,你會得到大約1.14像素,你會失去25%,因爲ipad是25%更高比橫向的iphone。這意味着只有576點纔會顯示,其餘的是隱藏的屏幕空間。

基本上,因爲您正在使用2種不同的長寬比,所以您無法同時使用iPad和iPhone執行通用應用程序的1:1。你將不得不製作2套不同的資產,或者採取一些不會改變遊戲體驗的創意自由。這完全取決於遊戲,不幸的是沒有人能夠回答它,直到他們理解了你的遊戲。