Ios 将脉冲施加到一个电极上,给它一个随机方向

Ios 将脉冲施加到一个电极上,给它一个随机方向,ios,objective-c,sprite-kit,game-physics,skspritenode,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))

我有一个在屏幕上弹跳的球。根据用户达到的水平,我让球跑得更快。因此,我做了以下工作:

[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是角度吗


有人知道如何随机化方向吗?

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

x分量由
半径*cos(θ)
给出,其中θ是以弧度为单位的角度。y是
半径*sin(θ)
。零角通常指向右侧(“正东”)


因此,只要改变θ,就可以改变向量的方向。(最明智的做法是将相同的数字同时传递给
cosf()
sinf()
,但不管使用什么,当然都会得到一些结果。)

只要改变角度…@JoshCaswell愚蠢的问题。4和-4是我用的角度吗?我只是把它们放在那里,效果相当好。是的,这些是角度。这里的表达式是从极坐标到笛卡尔坐标的转换:x=r*cos(θ),y=r*sin(θ)。r是半径和θ角。当然可以,@NicHubbard。