如何删除 SpriteKit 中除 forkey 之外的所有动作?

How to remove all actions except forkey in SpriteKit?

我有一个有几个部件(手臂、手、武器)的玩家,每当玩家改变移动模式(运行宁、站立、瞄准)时,这些部件上的所有动作都会被删除,并有新的动作是 运行.

现在,当玩家开火时,我 运行 武器节点上的 "shooting" 动作,当玩家停止开火时,我 运行 weapon.removeAction(forKey: "shooting")

问题是:当玩家改变移动模式时,这个 "shooting" 动作显然会被移除(因为武器的动作都被移除)。

有什么方法可以删除除 (forKey: "shooting") 以外的所有操作吗?

我尝试为所有其他操作提供密钥 "moving",但很快意识到多个操作不能具有相同的密钥(它会使用该密钥覆盖之前的操作并且之前的操作永远不会 运行 ). (顺便说一句,有什么解决办法吗?只是好奇)

显而易见的解决方案是 运行 在与 weapon 不同的节点上执行 "shooting" 操作,但这不太优雅。

就我个人而言,我会为您的精灵添加一个 Gun 节点,并将射击动作放在该节点上,这样您就可以删除所有动作

没有办法枚举你所有的动作,你可以按键删除,或者全部删除,就是这样。

如果您提取您的操作,删除所有操作,然后将其添加回去,它会重新启动您的操作,这也是您不想要的。