ios7 - Sprite 套件 : How to simulate magnetic force

标签 ios7 sprite-kit game-physics

我正在使用 iOS SpriteKit 开发游戏。我试图在这个游戏中制作一个物体,它将物体拉向它,当物体靠近它时,力会变得更大,比如磁铁或黑洞。我一直很难弄清楚要更改哪些属性才能让这个节点physicsBody 在其他节点经过时吸引它们。

最佳答案

在 iOS 8 和 OS X 10.10 中,SpriteKit 有 SKFieldNode 用于创建适用于某个区域的物体的力。这对于诸如浮力、面积比重和“磁铁”之类的东西非常有用。

不过要小心—— magneticField 对于您可能正在寻找的那种“磁铁”游戏玩法,您从该类(class)中获得的可能不是您想要的。磁场的行为符合 real-world physics at the micro level ...也就是说,它偏转移动的带电物体。我们通常认为的磁铁——那种可以粘在冰箱上、捡起废弃汽车或让气垫板飞起来的磁铁——是 a higher-level effect那股力量。

如果你想要一个只吸引附近任何东西(或某些特定东西)的领域,一个 radialGravityField是你真正追求的。 (为了只吸引特定的东西,在 field 上使用 categoryBitMask,在它应该/不应该与之交互的物体上使用 fieldBitMask。)

如果您想要一个或多或少强烈吸引不同事物的场,或者吸引某些事物并排斥其他事物,那么electricField是个不错的选择。您可以使用 charge物理物体的特性,使它们受到场的吸引或排斥(负值或正值)或或多或少的强烈影响(或大或小绝对值)。

在 iOS 8 和 OS X 10.10 之前,SpriteKit 的物理模拟不包括此类力。

不过,这并不妨碍您自己模拟它。在您的场景中 update:方法,您可以找到物体之间的距离,计算每个物体上与该距离成比例的力(以及您模拟的任何磁场强度),并对每个物体施加力。

关于ios7 - Sprite 套件 : How to simulate magnetic force,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21971441/

相关文章:

c# - 在点之间来回移动 3d 对象

ios - 确定所有 UIPanGestureRecognizer View 何时完成平移

ios - 如何在 iOS 中隐藏状态栏图标

Swift 3.0 SpriteKit > 用力施加脉冲?

ios - 停止永远重复的 SKAction - Sprite Kit

c++ - 没有帧率限制的移动 C++ SFML

c# - 将 .NET 4 线程转换为 .NET 2

ios7 - 不能在单点触控上覆盖 GetRendererForOverlay

ios - CoreData IOS中如何正确获取ObjectId?

swift - spritekit 我的玩家节点没有根据我的触摸移动?