如何在 sprite kit 游戏中改变重心?

How to change center of gravity in sprite kit game?

我一直在努力寻找,但没有成功。有没有办法改变 physicsworld gravity 属性,使物体不会被吸引到屏幕底部,而是吸引到屏幕中心?

您可能正在寻找 SKFieldNode。有几种不同的类型,因此您必须阅读文档。您可能正在寻找的那个叫做 radialGravityField.

为此使用 <a href="https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKFieldNode_Ref/index.html" rel="nofollow" title="SKFieldNode">SKFieldNode</a>。只需将它放在地图的中心并通过将重力设置为零的代码来禁用重力 (CGVector(0,0))

我会给你代码,但我不使用 Objective C,所以我不知道它的确切语法。不过我可以试一试... [physicsBody setGravity: CGVector(0,0)]; 请注意我不知道这是否是正确的语法

编辑: 提问者在 Swift 中请求了一个 SKFieldNode 的例子,所以就在这里。 对于所问的问题,您要做的是在中心创建一个 Radial Gravity Field 节点。此代码进入 GameScene.swift(如果您使用 Objective C,则进入 .m,并确保将语法更改为 Obj-C)。

let gravField = SKFieldNode.radialGravityField(); // Create grav field
gravField.position.x = size.width/2; // Center on X axis
gravField.position.y = size.height/2; // Center on Y axis (Now at center of screen)
addChild(gravField); // Add to world