我有一个在屏幕周围弹跳的球。根据用户达到的水平,我让球走得更快。所以,我做了以下事情:
[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 分量由 radius * cos(theta)
给出,其中 theta 是以弧度表示的角度。 y 是 radius * sin(theta)
。零角通常指向右侧(“正东”)。
因此,只需更改 theta 即可更改向量的方向。 (将相同的数字传递给 cosf()
和 sinf()
是最明智的,但当然你会得到 一些 结果 no不管你用什么。)
关于ios - 向 SKSpriteNode 施加脉冲以赋予其随机方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22777214/