2016-06-15 9 views
0

iPad用のパズルゲームを実際に作成しています。私は、ゲームの他の要素とは関係なく、すべてのジグソーパズルパーツを含む移動スライダーを作成したいと考えています。Swift SpriteKit:水平移動スライダーを画面より大きくするには

私は、画面上にパズルを作成することを約束しました。ユーザーが指で動かすことができるジグソーパズルのパーツはすべて異なります。移動スライダを作成するには、私のメインの.swiftファイルでその命令を使用すると思います。

addChild() 

ゲームのさまざまな要素を作成するには、画面上に立って、もう一方は移動スライダーを作成します。私はそれを成功させました。スライダーに含まれているさまざまなジグソーパズルパーツを使用しましたが、スライダーのtouchMoved関数を使用しても、水平に移動させることはできません。私は4096ピクセルの大きなスライダを作成しました。私のシーンサイズは2048 x 1536に固定され、シーン。スケーラビリティは.AspectFillに設定されています。私は問題がここから来たと思う(たぶん)。

scene.scalemodeが.Fillに設定された(4096 x 1536のような)非常に大きなシーンを作成すると、iPad上に変形された画像が表示されます。それをどうやって管理するのですか?タイトルと実際の質問はやや乖離があなたの助けを事前による

class GameViewController: UIViewController { 
override func viewWillLayoutSubviews() { 
// Configure the view. 
let skView = self.view as! SKView 
skView.showsFPS = true 
skView.showsNodeCount = true 

skView.ignoresSiblingOrder = true 

let scene = GameScene(size: skView.frame.size) 
scene.size.width = 4096 
scene.size.height = 1536 


/* Set the scale mode to scale to fit the window */ 
scene.scaleMode = .Fill 


skView.presentScene(scene) 
} 

おかげで、

答えて

1

は、私はあなたの問題は、それを提示するUIViewよりも大きいSKSceneを作成する方法であると仮定します。

SKSceneのサイズは、プレゼンテーションビュー(通常はSKViewのインスタンス)がレンダリングするポイントの解像度です。これは、UIScreenのスケーリングが考慮される前であるため、フルスクリーンのiPadビューで1024 * 768のシーンが2048 * 1536にレンダリングされます。 SKSceneのscaleModeプロパティは、シーンのサイズとSKViewのインスタンスが異なる場合にのみ考慮されます。

私の意見では、シーンのサイズがSKViewのサイズと異なるシナリオは、希少で例外的です。 SKViewとSKSceneをUIImageViewとUIImageでそれぞれ比較することができます。縦横比が異なる場合にのみ、scaleModeはビュー内のUIImageのレンダリング/表示に影響します。

ビューよりも大きなシーンを作成するにはどうすればよいですか? あなたはする必要はありませんので、これはトリックの質問です。

SKSceneのサイズをシーンのビューポートとみなします。シーン内のSKNodeは、シーンのビューポート内にのみ配置されるように制限されていません。

  • (0,0):サイズ1024 * 768のSKSceneで、(サイズ20 * 20の言う、)SKSpriteNodeとの位置、それを作成することは完全に合法であるあなたは、10の広場を参照してください* 10ポイント(または20×20個のピクセル)左下に
  • (500500)(レンダリングビューポートのうち隠し、それの四分の三を持つ):完全に可視
  • (1034,778):正確右上隅の範囲外
+0

これは私の問題を解決するのに役立ちました! – PGibouin