2014-04-23 94 views
1

我是新來的精靈套件,並且正在編寫一個簡單的遊戲作爲學習它的一種方式。有沒有一種簡單的方法來使用SpriteKit計算小數?

我的目標是讓我的精靈以隨機速度在屏幕上移動。這個精靈會定期產生,並且它可能發揮的最大速度應該隨着時間的推移而增加,以使遊戲更加困難。

爲此,我使用基於時間的整數來影響精靈移動的最小持續時間。我試圖做到這一點,如下面的代碼所示,仍然只產生整數值。我希望擁有更多的粒度,而不僅僅是整數。

int rando = (arc4random() % 150) + 50; 
int denom = _scores + 50; 
float actualDuration = rando/denom + 1; 
NSLog(@"%f", actualDuration); 


SKAction * actionMove = [SKAction moveTo:CGPointMake(-_blimp.size.width/2, actualY) duration:actualDuration]; 

我開始響應nielsbot的評論使用浮動的變量,並改變了我的代碼,以反映我的結構發生變化,但我仍然只獲得整數值,而不是像小數我一直在尋找。有誰知道這是爲什麼?

解決方法:我將整數變量改爲浮點變量,然後再將它們放入計算中。感謝您的幫助nielsbot!

+2

(稍)更好使用'arc4random_uniform()'vs'%'運算符 – nielsbot

+1

如果你想要在0-5之間以0.1爲增量進行隨機漂移,產生一個ra ndom在0-50之間的整數,轉換爲浮點數併除以10.0。現在你有50個可能的速度。依此類推,取決於你想要的粒度。 – nielsbot

回答

1
float actualDuration = rando/denom + 1; 
NSLog(@"%f", actualDuration); 

我不是在鑄造規則100%的信心,但據我經歷過什麼情況是,randodenom是整數,整數除法使用,導致整數值。

因此,你需要至少分母投給float但它更好地施展他們兩個,以及使用標準float符號常量值(1.0f):

float actualDuration = (float)rando/(float)denom + 1.0f; 
NSLog(@"%f", actualDuration); 

我個人傾向於投所有的整數值都是float/double/CGFloat,因此在計算中使用它們時不會出現任何鑄造規則問題。

相關問題