2014-09-10 9 views
0

지도를 통해 날아갈 때 내 주인공 (헬리콥터 조종사)을 따라 centerOnNode 방법을 사용 했으므로 이동하지 않는 HUD를 점으로 배치 할 수있는 가능성을 생각할 수 없습니다 화면 위쪽에 최고점이 표시됩니다.Sprite Kit에 정적 HUD를 만들 수 없습니다

-(id)initWithSize:(CGSize)size { 
    if (self = [super initWithSize:size]) { 
     /* Setup your scene here */ 

    SKNode *myWorld = [SKNode node]; 
    self.currentMyWorld = myWorld; 
    [self addChild:myWorld]; 

    SKLabelNode *score = [SKLabelNode labelNodeWithFontNamed:@"Verdana-BoldItalic"]; 
    score.fontSize = 25; 
    score.fontColor = [SKColor yellowColor]; 
    score.zPosition = 4; 
    self.pointHUD = score; 
    [myWorld addChild:score]; 

    } 
    return self; 
} 


#pragma mark - didSimulatePhysics 

- (void)didSimulatePhysics 
{ 

    [self centerOnNode: [self childNodeWithName: @"//pilot"]]; 
} 

- (void) centerOnNode: (SKNode *) node 
{ 
    CGPoint cameraPositionInScene = [node.scene convertPoint:node.position 
                fromNode:node.parent]; 

    if (self.currentPilot.position.x < -400 && self.currentPilot.position.y > -400 && self.currentPilot.y < 400){node.parent.position = CGPointMake(400, node.parent.position.y - cameraPositionInScene.y); 
    }else if (self.currentPilot.position.x < -400 && self.currentPilot.position.y < -400){node.parent.position = CGPointMake(400, 400); 
    }else if (self.currentPilot.position.x < -400 && self.currentPilot.position.y > 400){node.parent.position = CGPointMake(400, -400); 
    }else if (self.currentPilot.position.x > 400 && self.currentPilot.position.y < -400){node.parent.position = CGPointMake(-400, 400); 
    }else if (self.currentPilot.position.x >400 && self.currentPilot.position.y > 400){node.parent.position = CGPointMake(-400, -400); 

    }else if ((self.currentPilot.position.x > -400 && currentPilot.position.y < -400) || (self.currentPilot.x < 400 && self.currentPilot.y < -400)) 
    {node.parent.position = CGPointMake(node.parent.position.x - cameraPositionInScene.x,400); 

    }else if ((self.currentPilot.position.x > -400 && self.currentPilot.position.y > 400) || (self.currentPilot.position.x < 400 && self.currentPilot.position.y > 400)) 
    {node.parent.position = CGPointMake(node.parent.position.x - cameraPositionInScene.x,-400); 

    }else if (self.currentPilot.position.x > 400 && self.currentPilot.position.y > -400 && self.currentPilot.position.y < 400){node.parent.position = CGPointMake(-393, node.parent.position.y - cameraPositionInScene.y); 
    }else if (self.currentPilot.position.x > -400 && self.currentPilot.position.y < 400 && self.currentPilot.position.y > -400 && self.currentPilot.position.y < 400){node.parent.position = CGPointMake(node.parent.position.x - cameraPositionInScene.x,node.parent.position.y - cameraPositionInScene.y); 
    } 
} 

답변

4

좋아, 나는 그 솔루션이 매우 간단하고 간단하다는 것을 알았다. 방금 ​​내 장면에 다른 SKNode를 추가했습니다.

SKNode *HUD = [SKNode node]; 
    self.HudNode = HUD; 
    [self addChild:HUD]; 

    SKLabelNode *highscore = [SKLabelNode labelNodeWithFontNamed:@"Verdana-BoldItalic"]; 
    highscore.fontSize = 25; 
    highscore.fontColor = [SKColor yellowColor]; 
    highscore.zPosition = 4; 
    self.highScoreLabel = highscore; 
    [HudNode addChild:highscore]; 

이제 HUD의 위치는 조종사의 위치에서 독립적 인