随机运动/湍流 - SWIFT

时间:2014-09-10 20:12:42

标签: ios random swift sprite-kit ios8

我正在开发Iphone和Ipad上的游戏,就像太空入侵者一样。

要毁灭的气球从屏幕顶部直线下降。

这里是我添加它们的代码:

func addBalloonv(){


    var balloonv:SKSpriteNode = SKSpriteNode (imageNamed: "ballonvert.png")


    balloonv.physicsBody = SKPhysicsBody (circleOfRadius: balloonv.size.width/2)
    balloonv.physicsBody.dynamic = true
    balloonv.physicsBody.categoryBitMask = balloonCategory | greenCategory
    balloonv.physicsBody.contactTestBitMask = flechetteCategory
    balloonv.physicsBody.collisionBitMask = balloonCategory
    balloonv.physicsBody.mass = 1
    balloonv.physicsBody.restitution = 1
    balloonv.physicsBody.allowsRotation = true


    let minX = balloonv.size.width/2
    let maxX = self.frame.size.width - balloonv.size.width/2
    let rangeX = maxX - minX
    let position:CGFloat = CGFloat(arc4random()) % CGFloat(rangeX) + CGFloat(minX)

    balloonv.position = CGPointMake(position, self.frame.size.height+balloonv.size.height)

    self.addChild(balloonv)

我有一个气球颜色的功能。

所以目前他们直线前进,我正在寻找从顶部和两侧随机运动(像气球中的气球一样的湍流)。

我该怎么做?

非常感谢!!

1 个答案:

答案 0 :(得分:4)

这正是SpriteKit中的新物理场功能(从iOS 8 / OS X Yosemite开始)的用途。这些允许您将不同类型的力应用于区域中的所有物理实体,如重力,阻力和湍流。有关详细信息,请参阅SKFieldNode课程文档。

字段是一种节点,因此为了获得您所追求的内容,您需要在场景中添加一个噪点(或湍流)字段,覆盖气球所穿过的区域,并且&#&# 39; ll扰乱每个通过的气球的路径。最简单的方法就是这样:

let field = SKFieldNode.noiseFieldWithSmoothness(0.5, animationSpeed: 0.1)
scene.addChild(field)

你想要调整平滑度,动画速度和field.strength,直到你得到你想要的噪音水平。您可能还会考虑是否只需要一个噪声场,它可以在随机方向上应用随机力,或者是一个湍流场,它可以做同样的事情,但是当物体移动得更快时,力会变得更强。

上面的代码为您提供了一个效果区域无限的字段。您可能希望将其限制在特定区域(例如,它不会在它们着陆后继续敲击气球)。我这样做是为了制作一个仅覆盖300x200场景的前3/4的场:

field.region = SKRegion(size: CGSize(width: 300, height: 100))
field.position = CGPoint(x: 150, y: 150)