我有加速度计更新,我正在采样以获得垂直和水平速率。我每帧执行此操作。然后我创建一个向量并将其传递给moveBy SKAction。但是我不确定这是否会使系统过载,或者每当我添加新SKAction时它会停止前一个SKAction,丢弃它并运行新的SKAction。
答案 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附加到节点并应用基于加速度计状态计算的矢量来完成。这似乎更自然,处理碰撞和联系会更简单。