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 时删除它会恢复正常行为,明确声明它似乎会覆盖嵌套行为。
我的问题是,我有一款“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 时删除它会恢复正常行为,明确声明它似乎会覆盖嵌套行为。