将相同类型的 SKAction 添加到 sprite 会覆盖之前的动作吗?

Will adding the same type of SKAction to a sprite override the previous action?

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

向节点添加 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 附加到节点并应用基于加速度计状态计算的矢量来完成。看起来会更自然,处理碰撞和接触也会更简单。