1

私はまだspritekit/jstilemap/programming全般に関してかなり新しいです。

パララックスで垂直にスクロールする 2 つのタイルマップを使用してレーシング ゲームを構築しています。現在のタイルマップを削除して新しいタイルマップを作成することなく、タイルマップを更新できるかどうか疑問に思っていましたか?

これは基本的に私が今やっていることです。2 つのタイルマップを作成します。

for var i = 0; i < 2; i++
    {
        //tilemap
        var tileMap = JSTileMap(named: "map1.tmx")

        //size of tilemap
        var rect = tileMap.calculateAccumulatedFrame()
        tileMap.position = CGPoint(x: Int(rect.minX)/2, y: i*Int(rect.height))
        tileMap.name = "tilemap"
        self.addChild(tileMap)

    }

そして Update で tilemap と呼ばれるノードを見つけます。それらを下に移動し、十分に低い場合は跳ね上げます。次に、マップが 4 回表示された場合は、まったく新しいマップを作成して新しいマップでマップを更新し、古いマップを削除します。これは機能しますが、新しいマップの読み込み中にヒッチが発生します。

        self.enumerateChildNodesWithName("tilemap") {
            node, stop in

            node.position = CGPointMake(node.position.x,node.position.y-8)



            if(node.position.y <= -node.calculateAccumulatedFrame().height) {

                    self.mapCount += 1



            if (self.mapCount <= 3) {

                // if map count is less than 3 just show the same map over and over

                node.position = CGPointMake(node.position.x, node.position.y+node.calculateAccumulatedFrame().height*2)



            } else if (self.mapCount == 5) {

                //update map if has been shown 4 times

                println("newTILE")

                var tileMap = JSTileMap(named: "map2.tmx")

                var rect = tileMap.calculateAccumulatedFrame()

                tileMap.position = CGPointMake(node.position.x, node.position.y+node.calculateAccumulatedFrame().height*2)

                tileMap.name = "tilemap"

                self.addChild(tileMap)


                //remove old map
                node.removeFromParent()



            } else if(self.mapCount >= 5) {



                node.position = CGPointMake(node.position.x, node.position.y+node.calculateAccumulatedFrame().height*2)



            }

      }
4

0 に答える 0