SpriteKit - 设置比例和物理

时间:2013-09-30 06:03:02

标签: physics sprite-kit

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

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

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

但是,然后飞行相同数量的物体(刚刚缩小)而不是飞行距离的两倍以上。

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

那为什么它的飞行量不一样呢?尝试改变冲量以匹配比例,但它不起作用,是的,它飞行的距离较小 - 但它不是一个用于缩放的。

棘手的问题......

感谢您的想法。

3 个答案:

答案 0 :(得分:11)

我相信你不应该扩展SKScene(如果你尝试使用SKScene的setScale方法,就会暗示你)。请改为调整大小

myScene.scaleMode = SKSceneScaleModeAspectFill;

然后在缩放时:

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

* Apple documentation说:

  

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

答案 1 :(得分:10)

轻松修复(感谢Chris LaPollo,RW上的作者)

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

没有其他需要。

奇怪的是你无法做到

[self setScale:0.5];

当你收到这个警告时,它会起作用 - 但是运行动作确实很奇怪!!!

  

SKScene:设置SKScene的比例无效。

答案 2 :(得分: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]];

自我就是SKScene。 我希望这会有所帮助。