2014-04-01 64 views
2

我有一個在屏幕上反彈球。根據用戶的水平,我可以讓球更快。所以,我做了以下:應用衝動的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的角度?

有誰知道如何隨機化方向?

+0

只要改變角度... –

+0

@JoshCaswell愚蠢的問題。是4和-4我用角度?我只是扔在那裏,它工作得很好。 –

+0

是的,那些是角度。你的表達式有從極性到笛卡爾的轉換:x = r * cos(theta),y = r * sin(theta)。 r是半徑和θ角。 –

回答

6

您在CGVectorMake()中使用的表達式基本上是從極座標到笛卡爾的轉換。

X組分通過radius * cos(theta),其中THETA是弧度的角度給出。 radius * sin(theta)。零角度通常指向右側(「正東」)。

因此,只要改變THETA更改矢量的方向。 (這是最明智的傳遞同一號碼都cosf()sinf(),但當然你會得到一些結果不管你用什麼。)

+0

完美的解釋。我有它的工作。謝謝! –

+0

當然,@NicHubbard。 –