[英]SpriteKit- randomising spawn
我试图在X轴上随机生成一个对象,但它只在中心产生。
以下是关于产卵的报价。 缺少了什么?
//随机函数
func random() -> CGFloat {
return CGFloat(Float(arc4random()) / 0xFFFFFFFF)
}
func random(min: CGFloat, max: CGFloat) -> CGFloat {
return random() * (max - min) + min
}
// spawn cat func
func spawnCat(){
let randomXStart = random(min: gameArea.minX, max: gameArea.maxX)
let randomXEnd = random(min: gameArea.minX, max: gameArea.maxX)
let startPoint = CGPoint(x: randomXStart, y:self.size.height * 1.2)
let endPoint = CGPoint(x: randomXEnd, y: -self.size.height * 1)
let cat = SKSpriteNode(imageNamed: "before right")
cat.setScale(0.3)
cat.position = startPoint
cat.zPosition = 1
self.addChild(cat)
let moveCat = SKAction.move(to: endPoint, duration: 2)
let deleteCat = SKAction.removeFromParent()
let catSequence = SKAction.sequence([moveCat, deleteCat])
cat.run(catSequence)
}
请使用arc4random_uniform来获得所需的结果
func spawnCat(){
let randomXStart = CGFloat(arc4random_uniform(UInt32(gameArea.maxX - gameArea.minX))) + CGFloat(gameArea.minX)
let randomXEnd = CGFloat(arc4random_uniform(UInt32(gameArea.maxX - gameArea.minX))) + CGFloat(gameArea.minX)
let startPoint = CGPoint(x: randomXStart, y:self.size.height * 1.2)
let endPoint = CGPoint(x: randomXEnd, y: -self.size.height * 1)
let cat = SKSpriteNode(imageNamed: "before right")
cat.setScale(0.3)
cat.position = startPoint
cat.zPosition = 1
self.addChild(cat)
let moveCat = SKAction.move(to: endPoint, duration: 2)
let deleteCat = SKAction.removeFromParent()
let catSequence = SKAction.sequence([moveCat, deleteCat])
cat.run(catSequence)
}
如果您使用此代码获得0,则表示您的gameArea宽度为0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.