gpt4 book ai didi

ios - 如何在swift中找到最接近场景底部的 Sprite 节点

转载 作者:行者123 更新时间:2023-11-28 14:59:38 25 4
gpt4 key购买 nike

我有一个函数可以创建下降的 skspritenodes。该函数创建一个skspritenode,一个 Action 移动到底部然后删除。它每秒被调用一次。我正在尝试创建一个新函数,它会在给定时间找到这些 skspritenodes 中最低的。我尝试使用 enumeratechildnodes(withname:) 因为所有这些 skspritenodes 都具有相同的名称,然后我将它们的 position.y 附加到一个数组。然后我检查 skspritenode position.y 是否等于整数数组的最小值。如果是,那么它将是最低的。

func searchLowest() {
self.enumerateChildNodes(withName: "ball") {node,_ in
let sprite = node as! SKSpriteNode

var distanceArray = [Int]()

let distance = Int(sprite.position.y)
distanceArray.append(distance)

let spritePosition = Int(sprite.position.y)

if spritePosition == distanceArray.min {
...
}
}
}

但随后我收到此错误消息:

Binary operator '==' cannot be applied to operands of type 'Int' and '() -> Int?'

我是 SpriteKit 的新手,非常感谢任何建议

最佳答案

闭包是为每个匹配的节点执行的,但是存储数组的代码在闭包内,因此 distanceArray 每次执行只包含一个元素,并且每个元素都是闭包期间最接近的元素。

此外,您在调用 min 时遇到语法错误,而实际上您并未调用该函数。需要 parent 。

这可能不是找到最近球的最佳方法,但我认为这是对您的代码的修改:

var distanceArray = [Int]()
var closestNode : SKSpriteNode?
scene.enumerateChildNodes(withName: "ball") {node,_ in

if let sprite = node as? SKSpriteNode {
let distance = Int(sprite.position.y)
distanceArray.append(distance)
if distance == distanceArray.min() {
closestNode = sprite
}
}
}
print ("\(String.init(describing: closestNode))")

关于ios - 如何在swift中找到最接近场景底部的 Sprite 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49041147/

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