2015-05-24 50 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的大小。您可以在您的GameScenedidMoveToView做到这一点:

-(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); 
}