如何在Sprite Kit游戏中改变重心?

4

我一直在尝试寻找,但没有成功。是否有一种方法可以更改物理世界的重力属性,使对象不会被吸引到屏幕底部,而是被吸引到屏幕中心?

2个回答

4
使用SKFieldNode可实现此功能。将其放置在地图中央,并通过设置重力为零(CGVector(0,0))来禁用重力。

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

编辑: 请求者要求提供Swift中SKFieldNode的示例,这里是一个示例。对于所问的问题,您需要在中心创建一个径向引力场节点。该代码位于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

1
谢谢!我猜你用Swift编程?我也会Swift,实际上我正在将一个应用程序转换为Swift。我从未使用过SKFieldNode,所以你能否提供一些Swift代码作为示例?谢谢! - TruniTr

3

您可能正在寻找SKFieldNode。有几种不同的类型,因此您需要阅读文档。您可能需要的是称为radialGravityField的那个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接