2015-05-24 1 views
1

Как я могу получить оценку сцены?SKScene: границы сцены

Я тестирую с демо и я инициализировать сцену таким образом:

GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"]; 
scene.scaleMode = SKSceneScaleModeAspectFill; 

Так что, когда я нажимаю на экране я вхожу:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    for (UITouch *touch in touches) { 
     CGPoint location = [touch locationInNode: self]; 
     NSLog(@"%f, %f", location.x, location.y); 
    } 
} 

При нажатии левой нижней я получаю около 300-0, в то время как я ожидаю 0-0.

Как я могу получить границы верхнего и нижнего левого края? Я не могу найти способ, как:

[scene getBounds] 

Scene.frame печатает: (0,0,1024,768), что не соответствует !!

ответ

4

Вам необходимо установить размер GameScene равным его размеру SKView. Вы можете сделать это в didMoveToView вашего GameScene:

-(void)didMoveToView:(SKView *)view { 
    [super didMoveToView: view]; 
    self.size = view.bounds.size; 
} 

Или, вы можете установить размер, когда вы создать экземпляр GameScene:

SKView * skView = (SKView *)self.view; 
// ... 

GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"]; 
scene.scaleMode = SKSceneScaleModeAspectFill; 
scene.size = skView.bounds.size; 

[skView presentScene:scene]; 
0

Инициализировать сцену так:

GameScene *scene = [GameScene sceneWithSize:skView.bounds.size]; 
scene.scaleMode = SKSceneScaleModeAspectFill; 

Испытайте координаты следующим образом:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInNode:self]; 

    /* Pressed node */ 
    SKNode *node = [self nodeAtPoint:location]; 

    NSLog(@"x - %f; y - %f", location.x, location.y); 
}