[英]Applying impulse to an SKSpriteNode to give it a random direction
我有一个球在屏幕上弹跳。 根据用户达到的级别,我可以使球走得更快。 因此,我做了以下工作:
[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()
是最明智的sinf()
,但是无论使用什么方式,您当然都会得到一些结果。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.