我有一个数组SKNodes,一行一行,我想创建一个与其他人没有相同位置的数组,怎么样?我有一些实际上没有用的代码,我没有看到框架的节点,但有时候,当我的节点移动时,新节点与旧节点重叠,它不应该是#39 ; t(和btw,它有时在节点的中间重叠,这就是为什么我确定它不是由延迟引起的)。您可以在下面查看:
extension Point {
static func getRandom(inside scene: SKScene, andArray array: [SKSpriteNode]) -> CGPoint {
let x: CGFloat = getRandomX(inside: scene, andArray: array)
let y: CGFloat = getRandomY(inside: scene, andArray: array)
let i = getRandomSign()
return Point(x * i, y * i)
}
private static func getRandomX(inside scene: SKScene, andArray array: [SKSpriteNode]) -> CGFloat {
var val = CGFloat(arc4random() % UInt32(scene.frame.width/2))
for node in array {
if val == node.position.x {
val = getRandomX(inside: scene, andArray: array)
}
}
return val
}
private static func getRandomY(inside scene: SKScene, andArray array: [SKSpriteNode]) -> CGFloat {
var val = CGFloat(arc4random() % UInt32(scene.frame.height/2))
for node in array {
if val == node.position.y {
val = getRandomY(inside: scene, andArray: array)
}
}
return val
}
private static func getRandomSign() -> CGFloat {
let val = arc4random()
if val % 2 == 0 {
return -1
} else {
return 1
}
}
}
在SKScene中添加节点时会调用CGPoint.getRandom(....)
。