tl:dr-如何在游戏中施加初始力以加速子画面?

我正在通过本教程来构建基于Sprite Kit的游戏。 Link

我完全按照所有步骤进行操作,直到我除去重力并向球添加冲量为止,它一直工作良好。

问题是球的移动非常非常缓慢。当将重力重新添加到游戏中时,球将再次以固定速度运动。

如何对球施加冲动,使其从一开始就快速移动?在本教程中,gif显示了没有附加代码的高速球运动。所以也许我做错了。

class GameScene: SKScene {



override func didMove(to view: SKView) {

super.didMove(to: view)


let borderBody = SKPhysicsBody(edgeLoopFrom: self.frame)

borderBody.friction = 0

self.physicsBody = borderBody

physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0)

let ball = childNode(withName: BallCategoryName) as! SKSpriteNode
ball.physicsBody!.applyImpulse(CGVector(dx: 2.0, dy: -2.0))

  }

}

最佳答案

“我如何对球施加脉冲以使其从一开始就快速运动?在gif教程中,gif显示了球在没有额外代码的情况下高速运动。所以也许我做错了。”

我的猜测是您已经完全复制了您的导师代码,但是舞步缓慢?在这种情况下,问题出在节点BallCategoryName本身。我猜想,与您的教练相比,设计时球的重量可能更大,而您的教练很可能使球的重量更小,因此运动时速度更快,几乎没有冲动。
从您拥有的代码中,您实际上没有重力。因此,PhysicsWorld中没有重力。我对您的建议是不要留下引力,而是一时冲动,尝试通过改变球的质量来获得合适的质量。这很可能是您和您的导师有所不同的地方。

10-08 05:49