Spritekit六角形贴图:最终SKAction中的贴片检测。

时间:2017-05-31 18:52:48

标签: swift3 sprite-kit ios10 hexagonal-tiles sktilemapnode

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

我正在使用SpriteKit框架制作游戏。我使用带有六角形地图的SktileMapNode,以及一组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 个答案:

答案 0 :(得分:0)

我认为您希望在其他操作完成后运行完成块?您可以将其作为序列执行。

onkeypress="javascript:return updateLastTypedTime();" onkeyup="javascript:return refreshTypingStatus(' + chatboxtitle + "','" + toid + "');\"

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