【问题标题】:Moving SKNode by One Tile From Its Current Position将 SKNode 从当前位置移动一格
【发布时间】:2017-09-09 09:28:38
【问题描述】:

我正在使用磁贴编辑器,我用它创建了一个简单的、有点大的地图,如下所示。瓦片大小为 64 x 64。地图大小为 58 x 32。

我想知道游戏角色的当前位置。让我称之为播放器(SKNode)。我想知道这个家伙的当前位置,以便我可以找出它的任何相邻瓷砖是否不是障碍物。以下代码行给了我 (7, -3)。

background = self.childNode(withName: "World") as! SKTileMapNode
let position = background.convert(player.position, from: player)
let column = background.tileColumnIndex(fromPosition: position)
let row = background.tileRowIndex(fromPosition: position)
print(column, row)

,表示这些坐标指向相机的中心,用红色圆圈表示。以下给了我 (10, 2)。

let position = background.convert(player.position, from: self)
let column = background.tileColumnIndex(fromPosition: position)
let row = background.tileRowIndex(fromPosition: position)

这是左下角的位置。

现在,如果我想将游戏角色向上移动 1 个格子,请编写...

let position = background.convert(player.position, from: player)
let column = background.tileColumnIndex(fromPosition: position)
let row = background.tileRowIndex(fromPosition: position)
let destination = background.centerOfTile(atColumn: column, row: row + 1)
let action = SKAction.move(to: destination, duration: 1)
player.run(action)

,游戏角色将在行动中失踪,从地图上消失。那么如何将节点移动一格呢?

【问题讨论】:

    标签: ios swift swift3 sprite-kit sktilemapnode


    【解决方案1】:

    不妨试试这个:

        let currentPlayerPosition = background.convert(player.position, from: player)
        let column = background.tileColumnIndex(fromPosition: currentPlayerPosition)
        let row = background.tileRowIndex(fromPosition: currentPlayerPosition)
        let destination = background.centerOfTile(atColumn: column, row: row + 1)
    
        // the new line I added
        let newPlayerPosition = background.convert(destination, to: player)
    
        let action = SKAction.move(to: newPlayerPosition, duration: 1)
        player.run(action)
    

    【讨论】:

    • 没有。该节点将从地图上消失。
    • 也许是一个简单的建议,但尝试打印玩家当前和期望位置的实际 CGPoints。如果玩家只是在地图外移动,那么想到的最简单的想法就是 CGPoints 也在地图外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2013-09-22
    • 1970-01-01
    • 2014-05-25
    • 2011-11-15
    • 2021-10-09
    • 2017-01-30
    相关资源
    最近更新 更多