Swift 如何将skspritenode添加到始终在屏幕上的随机位置
我已经尝试了几种方法在场景中随机添加精灵,它们都很有效。问题是他们一半时间在屏幕上,一半时间在屏幕外 这是我最初尝试的Swift 如何将skspritenode添加到始终在屏幕上的随机位置,swift,random,position,skspritenode,arc4random,Swift,Random,Position,Skspritenode,Arc4random,我已经尝试了几种方法在场景中随机添加精灵,它们都很有效。问题是他们一半时间在屏幕上,一半时间在屏幕外 这是我最初尝试的 func placeButtons() { let button1 = SKSpriteNode(imageNamed: "button1") let PositionX1 = arc4random_uniform(UInt32(self.frame.width)) let PositionY1 = arc4rando
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)
}
我需要确保按钮始终出现在屏幕上
提前谢谢你的帮助 如果您在
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))
这方面有一个很好的教程-让button1=SKSpriteNode(图像名为:“button1”)button1.size=CGSize(宽度:50,高度:50)让位置x1=arc4random_统一(UInt32(self.frame.width-button1.size.width))让位置y1=arc4random_统一(UInt32(self.frame.height-button1.size.height))button1.position.y=CGFloat(PositionY1)button1.position.x=CGFloat(PositionX1)self.addChild(button1)是否正确?因为这仍然是在屏幕外和屏幕中间生成按钮。是的,这仍然是在屏幕外和屏幕中间生成按钮。我看到了问题,我认为-你需要使用边界大小,而不是帧-我将更新答案这很奇怪,现在它只在屏幕最左侧边缘生成按钮