2017-02-19 117 views
3

所以我正在使用Spritekit開發一款Xcode遊戲,用於iPhone。而且,通過使用node.setScale()方法,它在所有iPhone設備上看起來都很相似。現在我想使它成爲Universal,並在iPad上運行。我如何輕鬆做到這一點?有規模的公式嗎?Spritekit比例尺全面遊戲到iPad

我已經嘗試過是這樣的:

if UIDevice.current.userInterfaceIdiom == .pad { 
     sscale = frame.size.height/768 
    }else{ 
     sscale = frame.size.height/320 
    } 

然後爲每個節點我做node.setScale(sscale)。

這最終不是在iPad迷你,因爲工作看起來不同於iPad的空氣......即節點的大小和位置...

任何幫助嗎?

+0

如果你願意擴展節點(並不太擔心寬高比),你有沒有嘗試設置'scene.scaleMode = .fill'這將縮減爲你的一切? – ziya

回答

1

如果您使用的是SKCameraNode,則可以通過縮放相機來縮放整個場景。

// SKCameraNode+Extensions.swift 
extension SKCameraNode { 
    func updateScaleFor(userInterfaceIdiom: UIUserInterfaceIdiom) { 
     switch userInterfaceIdiom { 
      case .phone: 
       self.setScale(0.75) 
      case .pad: 
       self.setScale(1.0) 
      default: 
       break 
     } 
    } 
} 

然後在場景初始化時調用它。

guard let camera = self.childNode(withName: "gameCamera") as? SKCameraNode else { 
    fatalError("Camera node not loaded") 
} 

// Update camera scale for device/orientation 
let userInterfaceIdiom = UIDevice.current.userInterfaceIdiom 
camera.updateScaleFor(userInterfaceIdiom: userInterfaceIdiom) 
4

你基本上有2個選項。

1)將場景大小設置爲1024X768(橫向)或768x1024(縱向),並將默認的.aspectfill用於縮放模式。這是Xcode 7(iPad分辨率)的默認設置。

你通常只是在iPad上的頂部/底部(橫向)或左/右(縱向)顯示一些額外的背景。

,顯示更多的在iPad上的遊戲例子:

Altos的冒險,獅子座的財富,凌波,行禪,現代戰爭5

2)蘋果更改了默認的場景大小在Xcode 8到iPhone 6/7(750 * 1334-Portait,1337 * 750-風景)。此設置會在iPad上裁剪您的遊戲。

2個選項之間的選擇取決於您,取決於您正在製作的遊戲。我通常更喜歡使用選項1並在iPad上顯示更多背景。

無論場景大小縮放模式通常最好在.aspectFill的保留默認設置或.aspectFit

要調整具體的事情,如標籤等,爲你能做到這樣的設備

if UIDevice.current.userInterfaceIdiom == .pad { 
    // adjust some UI for iPads 
} 

我不會嘗試做一些隨機黑客手動更改不同設備上的場景或節點大小/尺度,你應該讓xCode/SpriteKit爲你做。

希望這有助於