Swift Spritekit 消散重力场

Posted

技术标签:

【中文标题】Swift Spritekit 消散重力场【英文标题】:Swift Spritekit dissipating Gravity field 【发布时间】:2014-11-15 14:17:11 【问题描述】:

我有一个使用 spritekit 的 swift 游戏。如果您点击屏幕,它将创建一个径向重力场并将所有其他对象拉入。我像这样创建重力场

var fieldNode = SKFieldNode.radialGravityField();

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

它有效,但我的问题是我只希望一个精灵只有在它距径向重心一定距离内时才会受到影响,并且我将拥有超过 1 个精灵。我看到的方式是有两种方法可以做到这一点,1.当精灵太远时,关闭该精灵的径向重力或2.使径向重力在一定半径后消散。场景也有整体重力。

所以主要问题是:

如何关闭精灵的 1 个重力或使径向重力消散?

【问题讨论】:

【参考方案1】:

字段节点的region 属性决定了它的影响范围。关联的SKRegion 对象允许您通过其半径定义一个圆形区域。

您还可以在物理实体上使用fieldBitMask,在场上使用categoryBitMask,以选择性地控制哪些场影响哪些实体。

【讨论】:

【参考方案2】:

尝试使用:

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

【讨论】:

以上是关于Swift Spritekit 消散重力场的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 5 在 SpriteKit 中以某个角度应用Impulse?

Spritekit 改变重力

如何制作一个不会不加速物体的力SpriteKit Swift

SpriteKit 重力

当在 Swift Spritekit 中触摸并按住屏幕时,我将如何向上移动我的节点?

Spritekit - 将加速应用于物理主体