SpriteKit - 设置比例和物理

Dog*_*fee 10 physics sprite-kit

在场景中"缩小"的正确方法是什么?

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

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

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

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

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

棘手的问题......

谢谢你的想法.

JKa*_*lio 11

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

myScene.scaleMode = SKSceneScaleModeAspectFill;
Run Code Online (Sandbox Code Playgroud)

然后在缩放时:

myScene.size = CGSizeMake(myScene.size.width + dx, myScene.size.height + dy);
Run Code Online (Sandbox Code Playgroud)

*Apple文档说:

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


Dog*_*fee 10

简单的修复(感谢RW的作者C​​hris LaPollo )

[self runAction:[SKAction scaleTo:0.5 duration:0]];
Run Code Online (Sandbox Code Playgroud)

没有别的需要.

奇怪的是你做不到

[self setScale:0.5];
Run Code Online (Sandbox Code Playgroud)

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

SKScene:设置SKScene的规模无效.

  • 不能再这样了:"SKScene:动画SKScene的规模没有效果." (3认同)
  • 你做不到[self setScale:0.5]; 因为你不应该缩放场景.请参阅下面的答案. (2认同)