繁体   English   中英

向SKSpriteNode施加冲量以使其具有随机方向

[英]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是弧度角。 yradius * sin(theta) 零角度通常指向右侧(“向东”)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM