将相同类型的SKAction添加到精灵会覆盖以前的操作吗?

时间:2015-02-24 00:15:00

标签: ios sprite-kit skaction

我有加速度计更新,我正在采样以获得垂直和水平速率。我每帧执行此操作。然后我创建一个向量并将其传递给moveBy SKAction。但是我不确定这是否会使系统过载,或者每当我添加新SKAction时它会停止前一个SKAction,丢弃它并运行新的SKAction。

1 个答案:

答案 0 :(得分:1)

向节点添加SKAction不会删除任何先前应用于它的操作。它们将同时执行。

如果要在应用新节点之前删除节点上的任何先前操作,请使用以下代码。

SKAction *newAction = [SKAction waitForDuration:1.0]; //Sample new action

[node removeAllActions];
[node runAction: newAction];

但是,如果您要删除特定操作(而不是所有操作):

//In your accelerometer update method
SKAction *newAction = [SKAction waitForDuration:1.0]; //Sample new action

[node removeActionForKey:@"waitAction"];
[node runAction: newAction withKey:@"waitAction"];

如果您想根据加速度计更新移动节点,我还建议使用物理环境。这可以通过将SKPhysicsBody附加到节点并应用基于加速度计状态计算的矢量来完成。这似乎更自然,处理碰撞和联系会更简单。