我已经尝试了几件事情来随机添加精灵在场景中它们都有效。问题在于它们在屏幕上的时间的一半,以及它们在屏幕外的一半时间。
这是我最初的尝试。
func placeButtons() {
let button1 = SKSpriteNode(imageNamed: "button1")
let PositionX1 = arc4random_uniform(UInt32(self.frame.width))
let PositionY1 = arc4random_uniform(UInt32(self.frame.height))
button1.position.y = CGFloat(PositionY1)
button1.position.x = CGFloat(PositionX1)
self.addChild(button1)
}
这是我试过的最后一个。
func placeButtons() {
let button1 = SKSpriteNode(imageNamed: "button1")
let sizeX = Int(CGRectGetMaxX(self.frame))
let sizeY = Int(CGRectGetMaxY(self.frame))
var randomX = CGFloat(Int(arc4random()) % sizeX)
var randomY = CGFloat(Int(arc4random()) % sizeY)
button1.position = CGPointMake(randomX, randomY)
self.addChild(button1)
}
我需要保证按钮始终显示在屏幕上。
提前感谢您的帮助!
答案 0 :(得分:0)
如果您将按钮随机放置在self.frame
内,则有时只会显示按钮的开头。
最大宽度&你应该使用的高度是
self.view.bounds.size.width - button1.frame.width
self.view.bounds.size.height - button1.frame.height
因此,如果您已经知道所需的按钮尺寸,请将随机客户更新为此
let PositionX1 = arc4random_uniform(UInt32(self.view.bounds.size.width - myButtonWidth))
let PositionY1 = arc4random_uniform(UInt32(self.view.bounds.size.height - myButtonHeight))
有一个很好的教程 - http://www.ymc.ch/en/ios-7-sprite-kit-setting-up-correct-scene-dimensions