SpriteKit-随机生成的菌种

SpriteKit-随机生成的菌种

问题描述:

我想在X轴上随机产生一个对象,但它只在中心产卵。SpriteKit-随机生成的菌种

下面是我的报价与产卵有关。少了什么东西?

//随机FUNC

func random() -> CGFloat { 
    return CGFloat(Float(arc4random())/0xFFFFFFFF) 
} 

func random(min: CGFloat, max: CGFloat) -> CGFloat { 
    return random() * (max - min) + min 
} 

//产卵猫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) 

} 
+0

添加打印语句,并打印出你的随机函数输出,以及变量randomXStart的值是什么 –

+0

附注,使用'arc4random_uniform'而不是你的随机方法 – Knight0fDragon

+0

“gameArea”代码是什么样的? – sicvayne

使用,而不是得到你想要的

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 arc4random_uniform代码则表示您的游戏区域宽度为0

+0

感谢的人,我改变了我的代码 FUNC randomInRange(LO:浮动,喜:浮) - >浮动{ 回报LO +浮动(arc4random_uniform(UInt32的(HI - LO + 1))) } FUNC spawnCat( ){ // MinX(左)和MaxX(右)之间的x坐标: let randomX = randomInRange(lo:Float(self.frame.minX + 5),hi:Float(self.frame.maxX + 5) ) let startPoint = CGPoint(x:CGFloat(randomX),y:self.frame.height * 1.2) let endPoint = CGPoint(x:CGFloat(randomX),y:self.frame.height * -0.5) 让猫= SKSpriteNode(imageNamed:“右前”) –

+0

它也可以工作 –