2

在我看来,一个旨在简单的框架会有这样的方法,而不是像我现在正在做的那样从物理核算中删除每个节点:

[self enumerateChildNodesWithName:@"live" usingBlock:^(SKNode *node, BOOL *stop){
        [node removeFromParent];
}];

如果这是一个菜鸟问题,我很抱歉,我刚刚开始使用 SpriteKit。谢谢!

4

3 回答 3

10

它有“那个方法”。如果您查看SKPhysicsWorld 参考资料,您会找到该speed属性。Speed = 0 表示暂停。

于 2014-03-31T06:44:08.067 回答
3

如果你想暂停场景,你可以这样做:

self.paused = YES;

这也将在您添加到场景中的所有节点上激增。

可以在单个节点上设置相同的标志。暂停节点的节点不能很好地配合碰撞检测,并且在您取消暂停它们之前不会运行任何基于动作的动画。

self.physicsWorld 有一些属性可能有助于“减慢物理速度” -

self.physicsWorld.gravity = CGVectorMake(0,-4.9);

例如,将是真实世界重力的 50%。实际数字并不重要,所以一定要调整重力值,直到感觉合适为止。这比您可以使用的下一个选项更受欢迎:

self.physicsWorld.speed = x;

其中 x 的默认值为 1,而 0 与暂停所有物理计算相同。

改变重力是首选,因为它也不会使物体反弹得更慢(例如)。

于 2014-03-31T19:43:14.310 回答
1

SKNode 有几种移除子节点的方法。

你可以在这里看到它们https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/Reference/Reference.html#//apple_ref/doc/uid/TP40013023-CH1-SW40

你可以做...

removeAllChildren

或者

removeChildrenInArray:

ETC...

编辑

等等,你在问什么?您的标题和问题不匹配。

于 2014-03-31T01:14:32.250 回答