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中没有重力。我对您的建议是不要留下引力,而是一时冲动,尝试通过改变球的质量来获得合适的质量。这很可能是您和您的导师有所不同的地方。