将脉冲应用于SKSpriteNode以使其具有随机方向

时间:2014-04-01 05:03:10

标签: ios objective-c sprite-kit game-physics skspritenode

我有一个球在屏幕周围反弹。根据用户所达到的水平,我让球更快。所以,我做了以下几点:

[ball.physicsBody applyImpulse:[self vectorForLevel:self.level]];

构建CGVector

的方法
- (CGVector)vectorForLevel:(int)level {
    CGFloat thrust = level+3;
    return CGVectorMake(thrust*cosf(4), thrust*sinf(-4));
}

虽然这个效果非常好,并且可以像我想的那样加快每个级别的速度,但我还想随机化球开始的角度,但我不知道该怎么做。

我不太了解CGVector真正知道如何改变角度。我投入的4和-4是角度吗?

有谁知道如何随机化方向?

1 个答案:

答案 0 :(得分:6)

您在CGVectorMake()中使用的表达式实质上是从极坐标到笛卡尔的转换。

x 组件由radius * cos(theta)给出,其中 theta 是以弧度表示的角度。 y radius * sin(theta)。零角度通常指向右侧(“正东方”)。

因此,只需更改 theta 即可更改矢量的方向。 (将同一个数字传递给cosf()sinf()是最明智的,但无论你使用什么,当然你都会得到一些结果。)