2014-09-10 92 views
1

我正在開發Iphone和Ipad上的遊戲,就像太空侵略者一樣。隨機移動/湍流 - SWIFT

摧毀的氣球從屏幕頂部直線落下。

這裏我的代碼添加它們:

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) 

我有氣球的顏色一個FUNC。

所以現在他們直線移動,我從頂部和兩側尋找隨機運動(像氣球一樣的湍流)。

我該怎麼做?

非常感謝!

回答

4

這正是SpriteKit中的新Physics Fields功能(適用於iOS 8/OS X Yosemite)的功能。這些可以讓你對區域內的所有物理機構施加不同的力量,如重力,阻力和湍流。詳細信息請參閱SKFieldNode班級文檔。

字段是一種節點,所以爲了得到你想要的內容,你需要在場景中添加一個噪聲(或湍流)場,覆蓋氣球穿過的區域,並且會干擾每個通過的氣球的路徑。做到這一點最簡單的方法是這樣的:

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) 
+1

你知道嗎?我愛你 !!! 我很確定這是轉身物理場功能。文檔已經在我的屏幕上打開了,但我不知道如何初始化它......這很簡單,我很慚愧:-D。我試圖用我的第一個應用學習,但這很困難,因爲我沒有很好的C語言基礎。你有noob的建議或文件嗎? 非常感謝! – Haox 2014-09-11 10:36:30