SpriteKit - 我节点的子节点似乎没有改变它的 zPosition 属性

SpriteKit - The child of my node does not appear to be changing its zPosition attribute

我的问题是,我有一款“2.5D”游戏,其中相互接触的角色需要动态更改其 zPosition。我正在使用物理体来实现这一点。

它与角色一起工作正常,但是,即使我记录了 zPosition 属性的正确更改,他们持有的盾牌(子对象)也没有效仿。

if (((firstNode.categoryBitMask & dudeCategory) != 0) && ((secondNode.categoryBitMask & shieldGuyCategory) !=0))
{
    if ((firstNode.node.position.y < secondNode.node.parent.position.y))
    {
        [secondNode.node.parent enumerateChildNodesWithName:@"shieldNode" usingBlock:^(SKNode *node, BOOL *stop){
            NSLog(@"Ooh I Say! Shield zPos = %f", node.zPosition);

            SKAction *zPos = [SKAction runBlock:^{
                node.zPosition = node.zPosition -200;

                NSLog(@"And now, %@ zPos = %f", node.name, node.zPosition);
                NSLog(@"But static NPC zPos = %f", firstNode.node.zPosition);
                NSLog(@"And finally, Shield-holder Guy zPos = %f", secondNode.node.parent.zPosition);
            }];

            [node runAction:zPos];
        }];

        secondNode.node.parent.zPosition = secondNode.node.parent.zPosition -200;
    }
}

哈尔普!

不要使用 SKAction runBlock: 设置 zPosition,而是直接设置它。

[secondNode.node.parent enumerateChildNodesWithName:@"shieldNode" usingBlock:^(SKNode *node, BOOL *stop){
        node.zPosition -= 200;
    }];

所以,原来我在它的方法中为盾牌设置了 zPosition。当父级更改 zPosition 时删除它会恢复正常行为,明确声明它似乎会覆盖嵌套行为。