ios - 如何使用 Sprite Kit 在 2D 游戏中模拟 z 轴的重力

标签 ios physics sprite-kit

我正在 iOS 7 上使用 sprite 工具包编写一个 2D 球类游戏,目前正在努力进行一个物理模拟。

解释一下预期的行为:如果一个球被扔进茶杯,它会绕着圈转,速度变慢,最后停在茶杯的中央。

我试图用重力来存档这个,但是 sprite kit 中的重力只适用于垂直的 X 和 Y 轴,而不适用于 Z 轴。我还尝试通过在 beginContact 上根据球在茶杯中的当前位置切换小物理体的重力值来使用水平重力。但是一些联系人被删除,结果看起来很不真实。

我想我需要在 update: 方法中解决这个问题,但我不知道该走哪条路。 非常欢迎任何建议,我需要说明我不是数学专家,请解释您的前进道路。 :-)

最佳答案

由于在 SpriteKit 中没有对这种行为的内置支持,与其试图破解现有函数来获得你想要的东西,不如在你的 x,y 2D 世界中集成一些已发布的 2D 物理公式可能会更好.我认为模拟磁性或归巢行为之类的东西可能适合此目的。

一个简单的例子是这样的(在场景的 -update: 方法中):

 CGFloat strength = 0.5; //(some scaling value)
 CGPoint ballLocation = ball.position;
 CGPoint cupLocation = cup.position;
 [ball.physicsBody applyForce:CGVectorMake((cupLocation.x - ballLocation.x) * strength, 
                                           (cupLocation.y - ballLocation.y) * strength)];

关于ios - 如何使用 Sprite Kit 在 2D 游戏中模拟 z 轴的重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228604/

相关文章:

ios - 发送到实例的无法识别的选择器?

c++ - C++ 中的非刚体 2D 物理引擎

javascript - 如何使用 HTML5 Canvas 而不是 Debug Draw 来绘制我的 Box2D 世界?

ios - 我如何判断 SKEmitterNode 何时达到其最大粒子数?

ios - 基于 UIScrollView 内容 View 高度不增加

objective-c - Objective C - 将 mpmediaitem 转换为 ogg vorbis

math - 数学/物理负责人的最近方法问题

ios - 使用 Overlayskscene Xcode Swift 触摸屏幕 Scenekit 时应用程序崩溃

ios - SKLabelNode 未出现在实际设备上

android - 图像数据使用