SpriteKit - 设置缩放和物理属性

11

"缩小"场景的正确方式是什么?

我有一个对象,我施加一个冲量将其发射过屏幕。例如,它会飞行约100个像素,这就像预期的那样-增加力量它就飞得更远,增加密度它就不那么远等。

我的问题在于缩放,我所知道的唯一缩小场景的方法是使用setScale,并且会按预期缩小所有节点。

但是,当我执行缩放之后,该对象飞行的距离不再是相同的(只是被缩小了),而是超过原来的两倍。

当我记录缩放前后的物体重量/密度等时,它们是相同的,正如预期的那样。

那么为什么它不飞相同的距离呢?尝试将冲量调整到与比例相匹配,但它没有用,是的,它可以飞行更短的距离-但它不是与缩放成正比的。

这是一个棘手的问题...

感谢您提供的想法。

3个回答

11

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

myScene.scaleMode = SKSceneScaleModeAspectFill;

然后在缩放时:

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

*苹果文档指出:

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


10

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

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

无需其他。

奇怪的是,您无法做到

[self setScale:0.5];

当你收到这个警告时,它不起作用,但运行一个操作却可以起作用--很奇怪!

SKScene:设置SKScene的缩放比例没有效果。


2
你不能使用 [self setScale:0.5]; 因为你不应该对场景进行缩放。请参见下面的答案。 - JKallio
3
不能再这样做了:"SKScene: 改变 SKScene 的缩放大小不会产生任何效果。" - albianto

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。 希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接