すべてのデバイスで正しく表示されるようにアプリケーションを正しく設定する際に問題があります。私は自分のゲームをiPhoneに最適にしたいと思っています。GameScene(size: CGSize(width: 1334, height: 750))
を使って自分のシーンサイズを設定し、.aspectFill
を使用すると、iPadsでは私がうまくいくものを表示するスペースが少なくなります。問題は、各ノードのフレームの高さと幅に関連するようにノードを配置する方法です。私はself.frame.height
,self.frame.width
、self.frame.midX
などを使ってノードを配置しています。ゲームを走らせると、私は自分のiPhone 6で動作していると考えて正しく配置しますが、iPadではすべてが壊れていて、ノードは画面外です。私はこれを理解しようと夢中になります普遍的なアプリケーション用のスプライトキットのスケーリング
1
A
答えて
1
私のゲームでは、私のアプリに、各長さ、幅、高さなどをどれだけ大きくするかを指示する数値を使用して解決しました。その電話の幅と高さを使用して、他のデバイスのために拡大する必要がある要素を計算します。この例ではiPhone 4をベースに使用しますが、どのデバイスでも使用できるのは、そのデバイスに応じてnumbersを変更するだけです。
ポートレートモード:
var widthFactor = UIScreen.main.bounds.width/320.0 //I divide it by the default iPhone 4 width
var heightFactor = UIScreen.main.bounds.height/480.0
風景モード:
var widthFactor = UIScreen.main.bounds.width/480.0 //I divide it by the default iPhone 4 landscape width
var heightFactor = UIScreen.main.bounds.height/320.0
もしノード、例えばコイン画像を作成するときに、スケールファクタによって、その座標または幅/高さを掛け:
let coin = SKSpriteNode(imageNamed: "coin")
coin.position = CGPoint(x: 25 * widthFactor, y: self.size.height - 70 * heightFactor)
1
私はあなたが探しているものは、この答えにあるかもしれないと思います:https://stackoverflow.com/a/34878528/6728196
具体的に私は(あなたの例に合わせて編集した)この部分は、あなたが探しているものだと思う:ユーザーが使用している場合
if UIDevice.current.userInterfaceIdiom == .pad {
// Set things only for iPad
// Example: Adjust y positions using += or -=
buttonNode.position.y += 100
labelNode.position.y -= 100
}
は基本的に、これは単にiPhoneの位置から一定量を加算または減算しますiPad。これはあまり複雑ではなく、画面の特定の値(self.size.width * decimalPercentage)だけ位置のx値とy値の両方を増減することができます。
この方法を使用するもう1つの利点は、iPhoneの位置を変更しているだけなので、設定したデフォルト値を使用して開始することです。その後、iPad上では、それが変更されます。
これは私が知っているように理解するのは難しい場合ので、私は説明
関連する問題
- 1. 普遍的なアプリケーションを作る方法
- 2. アンドロイド普遍的なランドスケープチェック
- 3. 普遍的なディープリンク問題
- 4. CSS普遍的なレイアウト
- 5. 普遍的な時間
- 6. Windowsの普遍的なアプリ8.1 Windowsの
- 7. 普遍的なアプリケーションのためのnibファイルのロード
- 8. Windowsの普遍的なアプリケーションのテキストファイルを読む方法
- 9. IOSのiPhoneへの普遍的なアプリケーション変更
- 10. 普遍的なホームボタンの方法
- 11. iphone&ipadの普遍的なアプリターゲット - 2アプリエラー
- 12. 普遍的なデータモデルとドメインモデルの実装
- 13. 普遍的なアプリケーションでメインのストーリーボードを取得
- 14. DotnetexeからWindowsへの普遍的なアプリケーション
- 15. 普遍的なユーザを見つける
- 16. C#普遍的なプラットフォーム・オーディオ、ビデオ
- 17. 普遍的なコードを作成する
- 18. Xcode - 普遍的なアプリケーションを作る方法
- 19. 普遍的なアプリケーション(iphoneとipad)でzbar sdkを使用する方法は?
- 20. タイル画像が表示されないWindows 10の普遍的なアプリケーション
- 21. 普遍的なアプリケーションのテキストボックスの入力スタイルを無効にする
- 22. 普遍的なアプリケーション(iPad/iPhone)を設計する際の優れた方法
- 23. MitmプロキシはWindowsの普遍的なアプリケーションSSLトラフィックをキャプチャしません
- 24. Xcode 4.3の普遍的なアプリケーションを作成していますか?
- 25. 普遍定数R
- 26. PHPの例のための "普遍的な"検索エンジン
- 27. Xcode 7、アセットカタログの普遍的なデバイスの背景イメージのサポート?
- 28. 普遍的なGoogleアナリティクスコードの複数のプロパティ
- 29. 普遍的なmakeベースのビルドシステムの設計
- 30. Windows普遍的なアプリの加速度計データのライブチャート
にこれをクリアすることができ、画面上のいくつかのノードを得るように見えたが、彼らはまだ正しく配置していません。たとえば、ノードをx:200とy:200に配置した場合、iPhoneでは正しく表示されますが、iPadではx:200とy:400のようになります。両方のデバイスで同じように見えるようにする必要があります – Brejuro
私は自分の答えを変更しました。 'x'に' widthFactor'を、 'y'に' heightFactor'を掛けましたか? – Eric
ええ、私のアプリは横になっているので、幅と高さを入れ替えましたか? – Brejuro