2014-11-21 28 views
2

我已經創建了一個遊戲,其中的鳥會隨機出現在屏幕上。 肖像模式。 想要它們從隨機x位置(從框架中間出現) 我也希望它們在屏幕的隨機Y位置(「自我」屏幕的最大頂部)位置如何在Swift中製作一個隨機的Sprite位置生成器

代碼工作(randomGenerator),但只能在屏幕的一側(X位置)。 我不能把一個負值放到X位置,因爲它不允許。

然後,我正在嘗試其他的東西,你可以看到。

我做錯了什麼?

var randomGenerater = CGPoint(x:Int(arc4random()%180) ,y:Int(arc4random()%260)) 
var minXPosition = (CGRectGetMidX(self.frame) * CGFloat(Float(arc4random())/Float(300))) 
var RandomYPosition = (CGRectGetMidY(self.frame) * CGFloat(Float(arc4random())/Float(UINT32_MAX))) 
var trial = (CGRectGetMidY(self.frame) + CGFloat(Float(arc4random()) - Float(UINT32_MAX))) 
var randomGenerator2 = CGPointMake(minXPosition, trial) 
bird.position = randomGenerator2 

回答

2

一般來說,

func randomInRange(lo: Int, hi : Int) -> Int { 
    return lo + Int(arc4random_uniform(UInt32(hi - lo + 1))) 
} 

給出了範圍lo ... hi一個隨機整數,所以

// x coordinate between MinX (left) and MaxX (right): 
let randomX = randomInRange(Int(CGRectGetMinX(self.frame)), Int(CGRectGetMaxX(self.frame))) 
// y coordinate between MinY (top) and MidY (middle): 
let randomY = randomInRange(Int(CGRectGetMinY(self.frame)), Int(CGRectGetMidY(self.frame))) 
let randomPoint = CGPoint(x: randomX, y: randomY) 

應該給想要的結果。

+0

謝謝你在這randomInRange的頭。 由於hi和lo沒有設置,所以你給我的問題會出現錯誤。 我不太明白算法是相當公平的,所以我不能通過它。 但是,謝謝你的幫助:) – 2014-11-21 20:58:18

+0

@RickC:對不起,我不明白。你必須在源文件的某處定義* randomInRange()函數。然後'讓randomX = randomInRange(...,...)'*調用具有給定值的函數。 – 2014-11-21 21:07:17