Hao*_*aox 2 random ios sprite-kit swift 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)
Run Code Online (Sandbox Code Playgroud)
我有一个气球颜色的功能。
所以目前它们直线移动,我正在寻找从顶部和两侧的随机运动(像空气中的气球一样的湍流)。
我怎样才能做到这一点?
非常感谢 !!
这正是 SpriteKit(从 iOS 8 / OS X Yosemite 开始)中新的物理场功能的用途。这些使您可以将不同类型的力应用于区域中的所有物理体,例如重力、阻力和湍流。有关SKFieldNode详细信息,请参阅课程文档。
场是一种节点,所以为了得到你想要的,你需要在你的场景中添加一个噪音(或湍流)场,覆盖气球落下的区域,它会扰乱每个气球的路径那通过。最简单的方法是这样的:
let field = SKFieldNode.noiseFieldWithSmoothness(0.5, animationSpeed: 0.1)
scene.addChild(field)
Run Code Online (Sandbox Code Playgroud)
您需要调整平滑度、动画速度,field.strength直到获得所需的噪声级别。您还可以考虑是否只需要噪声场(它在随机方向上施加随机力),还是湍流场(其作用相同,但当物体移动得更快时,力会变得更强)。
上面的代码为您提供了一个效果区域无限的字段。您可能希望将其限制在特定区域(例如,这样它就不会在气球着陆后继续敲打您的气球)。我这样做是为了制作一个仅覆盖 300x200 场景顶部 3/4 的字段:
field.region = SKRegion(size: CGSize(width: 300, height: 100))
field.position = CGPoint(x: 150, y: 150)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |