私はまだ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)
}
}