2014-11-15 61 views
1

我有一個使用spritekit的swift遊戲。如果你點擊屏幕就會形成放射狀的重力場,並把所有的其他對象。我創建重力場,像這樣Swift Spritekit消散重力場

var fieldNode = SKFieldNode.radialGravityField(); 

fieldNode.falloff = 0.5; 
fieldNode.strength = 1; 
fieldNode.animationSpeed = 0.5; 

它的工作原理,但我的問題是,我只希望隻影響一個精靈當它在距離徑向引力中心的一定距離內時,我將有超過1個精靈。我看到的方式是有兩種方法來做到這一點:1.當精靈太遠時關閉該精靈的徑向引力,或者2.使徑向引力在一定半徑後消散。場景還有一個整體重力。

所以今天的主要問題是:

我如何可以關閉1個重力Sprite或使徑向重力消散?

回答

2

一個字段節點的region屬性決定了它的效果區域。關聯的對象SKRegion允許您通過半徑來定義圓形區域。

您還可以在物理實體上使用fieldBitMask,在字段上使用categoryBitMask以選擇性地控制哪些字段影響哪些實體。

0

嘗試使用:

let radius: CGFloat = 1000.0 
    gravityField.strength = Float(pow(radius, 2)) * pow(10, -3)