我可以在SpriteKit中减慢或停止物理吗?

时间:2014-03-31 01:09:14

标签: ios sprite-kit skphysicsbody sknode

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

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

对不起,如果这是一个菜鸟问题,我刚刚开始使用SpriteKit。谢谢!

3 个答案:

答案 0 :(得分:10)

它有“那种方法”。如果你查看SKPhysicsWorld reference,你会找到speed属性。速度= 0意味着暂停。

答案 1 :(得分:2)

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

self.paused = YES;

也将扩散到您添加到场景中的所有节点。

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

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

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

例如,

将是真实世界引力的50%。实际数字并不重要,所以一定要调整重力值直到感觉正确。与您可以使用的下一个选项相比,这是非常受欢迎的:

self.physicsWorld.speed = x;

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

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

答案 2 :(得分: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:

等等...

修改

等等,你在问什么?你的头衔和问题不匹配。