ios - 向 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));
}

虽然这非常有效并且可以像我想要的那样在每个关卡中加快速度,但我也想随机化球的起始角度,但我不确定该怎么做。

我对 CGVector 了解不够,无法真正知道如何改变角度。我扔进去的 4 和 -4 是这个角度吗?

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

最佳答案

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

x 分量由 radius * cos(theta) 给出,其中 theta 是以弧度表示的角度。 yradius * sin(theta)。零角通常指向右侧(“正东”)。

因此,只需更改 theta 即可更改向量的方向。 (将相同的数字传递给 cosf()sinf() 是最明智的,但当然你会得到 一些 结果 no不管你用什么。)

关于ios - 向 SKSpriteNode 施加脉冲以赋予其随机方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22777214/

相关文章:

iphone - 来自 MPMediaItem 的 NSData

ios - 是否有可能在 iOS 中强制 UI 自动旋转?

ios - 2个imageView ios的碰撞

ios - 如何停止节点而不是让它在 1 秒后再次移动?

Swift SKShapeNode shapeWithSplinePoints

ios - 如何从数组内的字典中的 'key' 获取 'value'?

ios - 异步声音

ios - Mapkit Center the user Location annotation in another other views 坐标

iphone - 为什么在使用 lldb 调试时有时 'self' 不可用?

iphone - 截断 TTStyledTextLabel 中的文本