在场景中“缩小”的正确方法是什么。
我有一个对象,我应用一种冲动在屏幕上触发它。例如,它会在大约100 px的范围内发射。这可以按预期工作 - 增加飞行的力量,增加飞行的密度等。
我遇到的问题是缩放,我知道缩小场景的唯一方法是setScale,并按预期缩小我的所有节点。
但是,然后飞行相同数量的物体(刚刚缩小)而不是飞行距离的两倍以上。
当我在对比之前和之后记录对象的质量/密度等时,它们是预期的相同。
那为什么它的飞行量不一样呢?尝试改变冲量以匹配比例,但它不起作用,是的,它飞行的距离较小 - 但它不是一个用于缩放的。
棘手的问题......
感谢您的想法。
答案 0 :(得分:11)
我相信你不应该扩展SKScene(如果你尝试使用SKScene的setScale方法,就会暗示你)。请改为调整大小。
myScene.scaleMode = SKSceneScaleModeAspectFill;
然后在缩放时:
myScene.size = CGSizeMake(myScene.size.width + dx, myScene.size.height + dy);
将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。 我希望这会有所帮助。