2017-07-18 32 views
0

非常に大きなマップを表示したいシーン(メインシーンではない)にシーン(SpriteKit)があります。私はそのシーンをタッチに基づいてあらゆる方向にスクロールさせ、私が置いたランドマークと対話できるようにしようとしています。私は多くの運がないといくつかのアドバイスを探しています。タッチのあるシーンで移動する

私が得た最も近いものは、SKIPodeの代わりにUIViewとして追加しなければならなかったUIPanGestureRecognizerを使用していました。私は画像の周りをスクロールすることができました(実際にはスクロールしていた画像でした)。私は、私がそれらとやり取りできるような方法でオブジェクトを追加する方法を持っているようには見えなかった。

また、指でスワイプしていたはずのカメラの例も試しましたが、どちらもうまくいきませんでした。私は立ち往生して、あなたの提案を聞くのが大好きです!

+0

あなたの言うことはうまくいくはずです。 「私はオブジェクトを追加する方法がなかったので、私はやりとりすることができます」 – Fluidity

+0

あなたが持っているコードを読者に見せてもらえますか?それはあなたが現在どのようなアプローチを取っているかを見るのに役立ちます。 – halfer

+0

SpriteKitの代わりにUIKitを使用していたように聞こえる – Knight0fDragon

答えて

0

何時間もの検索とテストの後、私はUIPanGestureRecognizerと別のテストの両方を使用して、カメラビューをシーンに追加することで、作業ソリューションを手に入れることができました。私は指でスクロールしてSPSpriteNodesをクリックすることができるので、カメラで動く能力はより良い解決策かもしれません。 UIPanオプションを使用すると、私のビューを移動しただけで、画面からドラッグすることができます。また、ドラッグされていたビューに添付されたSKSpriteNodesとやりとりすることもできませんでした。私は私が使用している以下のカメラコードを投稿します。今私は制約を追加する方法を理解する必要があります!

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 
    let touch : UITouch = touches.first! 
    let positionInScene = touch.location(in: self) 
    let previousPosition = touch.previousLocation(in: self) 
    let translation = CGPoint(x: (positionInScene.x) - (previousPosition.x), y: (positionInScene.y) - (previousPosition.y)) 

    panForTranslation(translation) 
    //print(boardCamera.position) 

} 

func panForTranslation(_ translation: CGPoint) { 
    let position = boardCamera.position 
    let aNewPosition = CGPoint(x: position.x - translation.x, y: position.y - translation.y) 
    boardCamera.position = aNewPosition 
} 
関連する問題