Sprite kit 场景比例+;主播点=奇怪的行为

Sprite kit 场景比例+;主播点=奇怪的行为,sprite-kit,skaction,Sprite Kit,Skaction,我有一个需要水平居中的空场景,所以我设置了它的主播点: self.anchorPoint = CGPoint(0.5f, 0); 我还需要按比例缩放它,因此我对它运行一个操作,如下所示: [self runAction:[SKAction scaleTo:0.5f duration:0.0f]]; 我的问题是,当我检测到触碰时,我会得到一个奇怪的位置。 我使用通常的(locationInNode:self)方法检测触摸,目前我在触摸的位置添加了一个蓝色的正方形,但是当我触摸设备的四个角时,我

我有一个需要水平居中的空场景,所以我设置了它的主播点:

self.anchorPoint = CGPoint(0.5f, 0);
我还需要按比例缩放它,因此我对它运行一个操作,如下所示:

[self runAction:[SKAction scaleTo:0.5f duration:0.0f]];
我的问题是,当我检测到触碰时,我会得到一个奇怪的位置。 我使用通常的(locationInNode:self)方法检测触摸,目前我在触摸的位置添加了一个蓝色的正方形,但是当我触摸设备的四个角时,我看到一个框架,它是我屏幕的四分之一(正确),但似乎任意向左移动

以下是我已经检查过的一些内容:

  • 场景在viewWillLayoutSubviews中初始化,我知道它具有正确的初始尺寸
  • 场景的scaleMode设置为SKSceneScaleModeAspectFill,但我已尝试了所有这些设置,但均无效
将锚点设置为

self.anchorPoint = CGPoint(0.5f, 0);
并将场景比例模式设置为“纵横比匹配”,而不是“纵横比填充”

SKSceneScaleModeAspectFit

我曾为同一个问题挣扎过一段时间,但我想我终于找到了答案。您不应该缩放场景(就像尝试设置缩放时提示的那样)。你应该调整它的大小

试试这个:

myScene.scaleMode=SKSceneScaleModeAspectFill

然后在缩放时:


myScene.size=CGSizeMake(newX,newY)

好提示。我发现,如果重新缩放场景,在重新缩放的场景边界之外的触摸将转换为新场景区域内的新坐标。不过,通过调整大小,这个问题消失了。尽管如此,一开始我还是措手不及,将场景大小调整为更大的数字实际上会减小场景内容的大小。我想当你调整大小时,你在同一个“体积”内塞进了更多的像素,所以里面的所有东西都相应地减少了。