10

在场景中“缩小”的正确方法是什么。

我有一个对象,我应用一个冲动在屏幕上发射它。例如,它会发射大约 100 像素。这可以按预期工作 - 增加它飞行的力,增加它飞行的密度,等等。

我遇到的问题是缩放,我知道缩小场景的唯一方法是 setScale,然后按预期缩小我的所有节点。

但是,它不是飞行相同数量(只是缩小)的物体,而是飞行距离的两倍多。

当我在缩放之前和之后记录对象的质量/密度等时,它们是相同的,正如预期的那样。

那么为什么它的飞行量不一样呢?尝试改变脉冲以匹配比例,但它不起作用,是的,它飞行的距离更短 - 但它不是一对一的比例。

棘手的问题...

感谢您的想法。

4

3 回答 3

11

我相信您不应该缩放 SKScene(如果您尝试使用 SKScene 的 setScale 方法,它会提示您)。尝试调整它的大小。

myScene.scaleMode = SKSceneScaleModeAspectFill;

然后在缩放时:

myScene.size = CGSizeMake(myScene.size.width + dx, myScene.size.height + dy);

*苹果文档说:

将 scaleMode 属性设置为 SKSceneScaleModeResizeFill。Sprite Kit 会自动调整场景的大小,使其始终与视图的大小相匹配。

于 2013-11-18T21:58:04.910 回答
10

简单的解决方法(感谢RW的作者 Chris LaPollo )

[self runAction:[SKAction scaleTo:0.5 duration:0]];

不需要其他任何东西。

奇怪的是你不能做

[self setScale:0.5];

当您收到此警告时,它确实有效 - 但运行一个动作确实 - 很奇怪!!!

SKScene:设置 SKScene 的比例无效。

于 2013-10-02T05:05:33.387 回答
1

对于像我这样在搜索后最终到达这里的人来说,将场景的比例更改为缩小不再有效。相反,将所有节点封装在一个空的 SKNode 中并在这个节点上运行操作:

self.rootNode = [SKNode node];
// Add your children nodes here to the rootnode.
[self addChild:self.rootNode];
// Zoom out
[self.rootNode runAction:[SKAction scaleBy:2 duration:5]];
// Zoom in
[self.rootNode runAction:[SKAction scaleBy:.5 duration:5]];

self 是 SKScene。我希望这有帮助。

于 2015-04-14T03:03:17.247 回答