gpt4 book ai didi

Swift nodeAtPoint 难度

转载 作者:行者123 更新时间:2023-11-28 11:23:01 28 4
gpt4 key购买 nike

我正在构建一个游戏,玩家可以在游戏板上拖动一 block 棋子。我想知道那 block 下面的所有节点是什么,但我得到了奇怪的结果。这是 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))")

}

Sprite 在棋盘上移动得很好,但报告为 nodeAtPoint 的始终是 Sprite 在四处移动(这有道理但没有用。奇怪的是,nodesAtPoint 总是报告为空数组!这怎么可能?我应该采取哪些不同的做法?

更新:这仍然是一场斗争。我想将触摸方法保留在节点本身,而不是场景中。最新版本的 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 数组仍然是空的,但有一个非常奇怪的异常。当鼠标悬停在场景中心附近时,我得到了这个:

节点数:[ name:'(null)' accumulatedFrame:{{-30, -19.80000114440918}, {60, 39.600002288818359}}]

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

最佳答案

我找到了这个问题的答案。本质上,我试图在自身上检测 nodesAtPoint,在本例中是在屏幕上移动的节点。一旦我将其更改为 self.scene,nodesAtPoint 数组就会按预期填充。所以,要明确:

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

需要改成这样:

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

关于Swift nodeAtPoint 难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25225759/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com