有没有一种简单的方法在SpriteKit计算中使用小数?

时间:2014-04-23 23:56:47

标签: ios decimal sprite-kit

我是sprite kit的新手,我正在编写一个简单的游戏作为学习它的方法。

我的目标是让我的精灵以随机的速度在屏幕上移动。这个精灵定期产生,它可能潜在的最大速度应该随着时间的推移而增加,以使游戏更加困难。

为此,我使用得分(基于时间的整数)来影响精灵的最小移动持续时间。我尝试这样做的方式,如下面的代码所示,仍然只生成整数值。我希望有更多的粒度而不仅仅是整数。

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的帮助!

1 个答案:

答案 0 :(得分:1)

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

我对投射规则没有100%的信心,但据我所知,发生的事情是randodenom是整数并使用整数除法,从而导致整数值。

因此,您需要至少将分母投射到float,但最好将它们同时投射,以及对常量值使用标准float符号({{1} }):

1.0f

我个人倾向于在计算中使用它们时将所有整数值强制转换为float / double / CGFloat,这样就不会出现任何强制转换规则问题。