【发布时间】: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
【问题讨论】:
标签: swift3 sprite-kit ios10 hexagonal-tiles sktilemapnode