在我的砖块游戏中,我希望砖块放在彼此的顶部。
我创建了一个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#>)
}
然而问题是新砖的位置。我需要刚加载的砖块的定位信息,以了解新砖块的位置。
答案 0 :(得分:1)
只做
[self.parent.children objectAtIndex:([self.parent.children count] - 2)] ;
将新块添加到其父节点以获取之前添加的任何节点之后。如果你要添加Brick和非Brick,这不会起作用,但如果它的结构是SKNode只保存了Brick,那么这将获得你添加的旧砖。
注意,我没有检查这个以确定目标C是否正确,但它的概念是正确的。
算法:
呼叫父节点,
调用父节点的子节点,
转到子节点的最末端(这是目前添加的最新砖块),
最后得到索引,
返回此索引处的SKNode。