首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKScene:场景边界

SKScene:场景边界
EN

Stack Overflow用户
提问于 2015-05-24 17:47:40
回答 2查看 1K关注 0票数 1

我怎样才能得到场景的边界?

我使用demo进行测试,并以这种方式初始化scene:

代码语言:javascript
复制
GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];
scene.scaleMode = SKSceneScaleModeAspectFill;

所以,当我点击屏幕时,我会登录:

代码语言:javascript
复制
-(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。

我怎样才能得到上下左右的界限呢?我找不到像这样的方法:

代码语言:javascript
复制
[scene getBounds]

Scene.frame打印:(0,0,1024,768)不对应!!

EN

回答 2

Stack Overflow用户

发布于 2015-05-24 18:07:46

您需要将GameScene的大小设置为与其SKView的大小相等。您可以在GameScenedidMoveToView中执行此操作

代码语言:javascript
复制
-(void)didMoveToView:(SKView *)view {
    [super didMoveToView: view];
    self.size = view.bounds.size;
}

或者,您可以在实例化GameScene时设置大小

代码语言:javascript
复制
SKView * skView = (SKView *)self.view;
// ...

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

[skView presentScene:scene];
票数 4
EN

Stack Overflow用户

发布于 2015-05-24 20:05:42

像这样初始化场景:

代码语言:javascript
复制
 GameScene *scene = [GameScene sceneWithSize:skView.bounds.size];
 scene.scaleMode = SKSceneScaleModeAspectFill;

测试坐标如下:

代码语言:javascript
复制
-(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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30422119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档