【问题标题】:SpriteKit - Set Scale and PhysicsSpriteKit - 设置比例和物理
【发布时间】:2013-09-30 06:03:01
【问题描述】:

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

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

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

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

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

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

棘手的问题...

感谢您的想法。

【问题讨论】:

    标签: physics sprite-kit


    【解决方案1】:

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

    myScene.scaleMode = SKSceneScaleModeAspectFill;
    

    然后在缩放时:

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

    *Apple documentation 说:

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

    【讨论】:

      【解决方案2】:

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

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

      不需要其他任何东西。

      奇怪的是你做不到

      [self setScale:0.5];
      

      当您收到此警告时,它并没有工作 - 但运行一个操作会 - 很奇怪!!!

      SKScene:设置 SKScene 的比例无效。

      【讨论】:

      • 你不能这样做 [self setScale:0.5];因为你不应该缩放场景。请参阅下面的答案。
      • 不能再这样做了:“SKScene:动画 SKScene 的比例没有效果。”
      【解决方案3】:

      对于像我这样在搜索后最终来到这里的人,更改场景的比例以缩小不再有效。 相反,将所有节点封装在一个空的 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。 我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多