我正在开发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)
我有一个气球颜色的功能。
所以目前他们直线前进,我正在寻找从顶部和两侧随机运动(像气球中的气球一样的湍流)。
我该怎么做?
非常感谢!!
答案 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)