2016-08-07 22 views
3

私のSKSceneでは、私はシンプルなスペースシューティングゲームを作っています。ゲームがどのiPhoneで再生されているかにかかわらず、敵が常に画面サイズ内に表示されるようにするにはどうすればよいですか?シーンサイズ内のノードの位置

言い換えれば、シーンサイズの最大と最小のX座標を計算するにはどうすればよいですか?さらに重要なのは、ゲームが実行されているiPhoneの種類によって現在のシーンサイズがどのようにわかるのですか?

+0

:あなたはあなたの国境(デバッグ用かどうか)確認したい場合

あなたは大きなデバイスで画像が大きくなることを期待しています – Knight0fDragon

+0

@ Knight0fDragon画像は大きな機器で大きくなるはずです –

答えて

0

、iPhoneのモデルによって異なり、あなたのシーンのサイズを変更するスプライト・キットを放置しないでください仕事のこの種ん:

scene.scaleMode = SKSceneScaleMode.ResizeFill 

シーンは、ビューと一致するようにスケーリングされていません。代わりに、シーンは のサイズがビューの のサイズと常に一致するように自動的にサイズが変更されます。

シーンの最初の初期化時に、そのサイズのsizeプロパティが指定されたイニシャライザによって設定されます。シーンのサイズは、シーンの可視部分のサイズをポイントで指定します。これは、シーンの可視部分を指定するためにのみ使用されます。


更新は、位置決めのお手伝いをします

をあなたはをscaleModeを使用する代わりに、自分の位置を設定する場合、これはすべてのシーンで動作するために、あなたは あなたscene.scaleModeに.AspectFillを設定することができますし、シーンサイズは2048x1536または1536x2048でなければなりません。これはiPad用にも拡張可能にするでしょう。

class StartScene: SKScene { 
    let playableArea: CGRect! 
} 

override init(size: CGSize) { 

    //1. Get the aspect ratio of the device 
    let deviceWidth = UIScreen.mainScreen().bounds.width 
    let deviceHeight = UIScreen.mainScreen().bounds.height 
    let maxAspectRatio: CGFloat = deviceWidth/deviceHeight 
    //2. For landscape orientation, use this 
    let playableHeight = size.width/maxAspectRatio 
    let playableMargin = (size.height - playableHeight)/2.0 
    playableArea = CGRect(x: 0, y: playableMargin, width: size.width, height: playableHeight) 

    //3. For portrait orientation, use this 
    let playableWidth = size.height/maxAspectRatio 
    let playableMargin = (size.width - playableWidth)/2.0 
    playableArea = CGRect(x: playableMargin, y: 0, width: playableWidth, height: size.height) 

    super.init(size: size) 
} 

だから、あなたがあなたのオブジェクトを配置することができます。このコードは、iPhone 4Sで働く5、5S、6、6プラス、6S、6Sプラス、やiPad

ball.position = CGPoint(x: CGRectGetMidX(playableArea), y: CGRectGetMaxY(playableArea) - (ball.size.height * 0.90)) 

。あなたは、あなたのゲームのモデルを説明する必要が大きなシーンを持つ上であなたが計画してください参照、プレイエリアのより多くまたは実行

func drawWorkArea() { 
    let shape = SKShapeNode() 
    let path = CGPathCreateMutable() 
    CGPathAddRect(path, nil, workArea) 
    shape.path = path 
    shape.strokeColor = SKColor.redColor() 
    shape.lineWidth = 8 
    addChild(shape) 
} 
+0

iPhone版が変わったときの画像のサイズ変更についての問題ではありません。それは私の敵が私をスポーンするときのポジショニングです。彼らは時々縁から出るか、または半分と半分のままになります。私が抱えている問題は、x-コーディネーションの範囲を計算することです。 –

+0

たとえば、iPhone 6Sでの開発と画面が完璧な場合、フレームサイズを希望の画面モード幅で割ってみます。これにより、画面の比率と同じになるフロートが得られます。したがって、ユーザーがより小さいデバイスを使用している場合、浮動小数点は0.XXとX.XXのより大きいデバイスです。 iPhone 6Sは1.00になります。次に、画像のサイズ、速度、距離などを比率で乗算します。 –

+0

私はあなたが計算を説明する部分についてあなたを失っています。あなたはコードの面で教えてくれますか?私がやっていたことは最小x値と最大x値を設定することでした。私の分は= screen.size.width/6、max = screen.size.widthでした。私はこれらの範囲の間のランダムな値を選択していた –

関連する問題