Spritekit Hexagonal map:SKAction 中的瓦片检测。

Posted

技术标签:

【中文标题】Spritekit Hexagonal map:SKAction 中的瓦片检测。【英文标题】:Spritekit Hexagonal map: tile detection in end SKAction. 【发布时间】:2017-05-31 18:52:47 【问题描述】:

我问这个问题是因为我没有找到任何解决此类问题的方法。事实上,十六进制地图支持并不是很受欢迎。

我正在使用 SpriteKit 框架制作游戏。我使用带有 Hexagonal 地图的 SktileMapNode,有 1 组 4 组图块。

玩家节点在每个图块上移动,我不希望当他在特定图块上移动时会触发某些事件(打印,函数,Sktransition),但目前我只检测这些图块。

我设置了用户数据(作为 bool )并将它们应用到代码中,但没有发生任何事情,即使是在磁贴上的触摸事件。

    extension GameScene  



func move(theXAmount:CGFloat , theYAmount:CGFloat, theAnimation:String )  


    let wait:SKAction = SKAction.wait(forDuration: 0.05)

    let walkAnimation:SKAction = SKAction(named: theAnimation, duration: moveSpeed )!

    let moveAction:SKAction = SKAction.moveBy(x: theXAmount, y: theYAmount, duration: moveSpeed )

    let group:SKAction = SKAction.group( [ walkAnimation, moveAction ] )

    let finish:SKAction = SKAction.run 



        let position = self.thePlayer.position

        let column = self.galaxieMapnode.tileColumnIndex(fromPosition: position)
        let row = self.galaxieMapnode.tileRowIndex(fromPosition: position)


        if let tile:SKTileDefinition = self.galaxieMapnode.tileDefinition(atColumn: column, row: row) 


            if  let tileBoolData = tile.userData?["wormholeTile"] as? Bool 

                if (tileBoolData == true) 

                    print("Wormhole touched")


                



            




         else 


            print("different tile")


        


    

只有“不同的瓦片”输出被触发。

欢迎任何帮助。

图片示例链接:the thing I want

【问题讨论】:

【参考方案1】:

我认为您想在其他操作完成后运行您的完成块?您可以将其作为一个序列来执行。

var sequence = [SKAction]()
let action = SKAction.move(to: location, duration: 1)
let completionHandler = SKAction.run(
    // Check tile info here
)

sequence += [action, completionHandler]

self.player.run(SKAction.sequence(sequence))

通常在六边形地图中,您会将玩家移动到相邻的图块并检查图块属性,然后继续下一个移动动作。这需要来自GameplayKit 的图形和寻路功能。

【讨论】:

我写了一些articles 和example projects 关于SpriteKit 中的六角平铺贴图。 谢谢 Mark,我正在看这个 Gameplaykit。感谢您的提示。我可以再问你一个问题吗? 抱歉编辑:我回来了,看来我必须实现很多东西来制作图形和寻路功能,而且似乎我必须在我拥有的许多文件中重建很多东西。 GamePlay 套件是实现我想做的事情的唯一途径? 这个example 可能对你有用。它使用玩家的位置来寻找对象。

以上是关于Spritekit Hexagonal map:SKAction 中的瓦片检测。的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit小球被旋涡吞噬动画的进一步改进

Swift,SpriteKit:如何保存场景的整个进度

恢复原状不适用于 SpriteKit 中的任何内容

更改 pushViewController 的“动画:”标志更改 SpriteKit 分辨率

safeAreaInsets SpriteKit中的问题

Swift SpriteKit SKSpriteNode 的“有时”不显示