如何获得用于新spritenode的旧spritenode的位置?

时间:2016-03-08 20:23:38

标签: ios objective-c sprite-kit

在我的砖块游戏中,我希望砖块放在彼此的顶部。

我创建了一个BrickNode类。这里有不同大小的砖块,可以在主文件中调用。

#import "BrickNode.h"

@implementation BrickNode

- (instancetype) init {
    if (self == [super init]) {

        int number = arc4random() % 2;

        if (number == 0) {
            SKSpriteNode *bridge1 = [SKSpriteNode spriteNodeWithImageNamed:@"TestBridgePiece"];
            bridge1.anchorPoint = CGPointMake(0.5, 0.0);
            [self addChild:bridge1];
        }
        if (number == 1) {
            SKSpriteNode *bridge2 = [SKSpriteNode spriteNodeWithImageNamed:@"TestBridgePiece1"];
            bridge2.anchorPoint = CGPointMake(0.5, 0.0);
            [self addChild:bridge2];
        }
    }
    return self;
}

@end

我创建了调用类的方法。这个方法将在TouchesBegin中调用。因为我希望用户能够生成下一个砖块。

 -(void)spawnBrick
    {
        BrickNode *newBrick = [[BrickNode alloc] init];
        newBrick.position = CGPointMake(0.0, <#CGFloat y#>)
    }

然而问题是新砖的位置。我需要刚加载的砖块的定位信息,以了解新砖块的位置。

1 个答案:

答案 0 :(得分:1)

只做

[self.parent.children objectAtIndex:([self.parent.children count] - 2)] ;

将新块添加到其父节点以获取之前添加的任何节点之后。如果你要添加Brick和非Brick,这不会起作用,但如果它的结构是SKNode只保存了Brick,那么这将获得你添加的旧砖。

注意,我没有检查这个以确定目标C是否正确,但它的概念是正确的。

算法:

呼叫父节点,
调用父节点的子节点,
转到子节点的最末端(这是目前添加的最新砖块),
最后得到索引,
返回此索引处的SKNode。