【问题标题】:Pausing SKSpriteNode (Swift, SpriteKite)暂停 SKSpriteNode (Swift, SpriteKite)
【发布时间】:2015-04-18 18:47:33
【问题描述】:

我需要为我的比赛暂停球。我希望它们停在原地,但它们是冲动移动的,如果我让它们非动态地阻止它们,冲动就会消失。我试图暂停它们并取消暂停它们,它们仍然朝着同一个方向前进。我试过了

      ball.paused = true

但这没有用。有人知道吗?

【问题讨论】:

    标签: ios swift sprite-kit


    【解决方案1】:

    我没有冻结节点,而是冻结了场景 场景?.physicsWorld.speed = 0 因为这会冻结所有节点,而不是我需要的时间或分数整数。

    【讨论】:

      【解决方案2】:

      这是我在游戏中解决它的方法:

      var ballVelocity  = CGVector()
      
      func pauseAction(ball: SKSpriteNode){
      
          if ball.dynamic {
              //Ball is moving. Save the current velocity of ball.
              ballVelocity = ball.velocity
              //Stop the ball
              ball.physicsBody.dynamic = false
      
          }else{
              //Ball is paused.
              //Resume ball movement.
              ball.physicsBody.dynamic = true
              //Add the saved velocity.
              ball.velocity = ballVelocity
          }  
      }
      

      【讨论】:

        【解决方案3】:

        您可以使用ball.physicsBody.velocity = CGVectorMake(0, 0);,但请记住,如果球受到重力影响,它仍然会掉落。

        【讨论】:

        • 是的,我在发布问题后尝试过。那是行不通的,因为它不会让球重新开始运动。它只是冻结它们,当它们解冻时,它们不会移动。
        • @drewvy22 - 当你“解冻”时,只需再次对其施加冲动。
        • 这不起作用,因为它被放入了覆盖函数更新函数中,所以只会继续施加力。它必须在那个特定的功能中才能让其他一切正常工作。我只是不明白为什么 ball.pause = true 根本不起作用
        猜你喜欢
        • 2014-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多