【问题标题】:Swift nodeAtPoint difficultySwift nodeAtPoint 难度
【发布时间】:2014-08-10 05:17:09
【问题描述】:

我正在构建一个游戏,其中玩家在游戏板上拖动一块。我想知道那块下面的所有节点是什么,我得到了奇怪的结果。这是 touchesMoves 函数:

    override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {

        let touch = touches.anyObject() as UITouch
        let location = touch.locationInNode(self.parent)

        self.position = location
        println("checker x: \(location.x)")
        println("node at point: \(self.nodeAtPoint(location))")
        println("nodes at point: \(self.nodesAtPoint(location))")

    }

精灵在棋盘上移动得很好,但是报告为 nodeAtPoint 的总是精灵正在四处移动(这很有意义但没有用。奇怪的是,nodeAtPoint 总是报告为一个空数组!这怎么可能?我应该做些什么不同的事情?

更新:这仍然是一场斗争。我想将触摸方法保留在节点本身,而不是场景中。 touchesMoved 的最新版本如下:

override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {

    // Turn off the touched bool:
    touched = false

    let touch = touches.anyObject() as UITouch
    let location = touch.locationInNode(self.parent)
    let loc = touch.locationInView(scene.view)
    let loc2 = touch.locationInNode(scene)

    self.position = location
    println("checker: \(loc2.x), \(loc2.y)")
    println("node at point: \(self.nodeAtPoint(loc2).name)")
    println("nodes at point: \(self.nodesAtPoint(loc2))")

}

nodesAtPoint 数组继续为空,但有一个非常奇怪的异常。当悬停在场景中心附近时,我得到了这个:

节点在点:[名称:'(null)'accumulatedFrame:{{-30,-19.80000114440918},{60,39.600002288818359}}]

那里没有我知道的形状节点!为什么我没有检测到我经过的节点?

【问题讨论】:

  • 在这种情况下self 是什么?
  • 这个触摸方法在被移动的节点上。但是,我正在考虑将所有触摸行为移动到场景节点,然后看看它是否效果更好。

标签: swift sprite-kit


【解决方案1】:

我发现了这个问题的答案。本质上,我试图检测自身的nodesAtPoint,在这种情况下,它是在屏幕上移动的节点。一旦我将其更改为 self.scene,nodesAtPoint 数组就会按预期填充。所以,要清楚:

println("nodes at point: \(self.nodesAtPoint(loc2))")

需要改成这样:

println("nodes at point: \(self.scene.nodesAtPoint(loc2))")

【讨论】:

    【解决方案2】:

    如果selfSKScene,请尝试更改

    let location = touch.locationInNode(self.parent)
    

    let location = touch.locationInNode(self)
    

    因为SKScene的父级是nil

    【讨论】:

    • 在这种情况下,self不是场景,但是今天我打算将touch方法移到场景中,看看是否可以改善情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多