【问题标题】:Swift 3.0 SpriteKit > apply impulse with force?Swift 3.0 SpriteKit > 用力施加冲动?
【发布时间】:2016-09-26 18:39:50
【问题描述】:

tl:dr - 我如何应用初始力来加速游戏中的精灵?

我正在通过本教程构建一个基于精灵套件的游戏。 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))

  }

}

【问题讨论】:

  • 你的力很弱,重力是 9.8 m/s,你以 2.8m/s 的速度移动它,它与重力一起快速工作的原因是因为重力在帮助你,通过碰撞加速到 12.6m/s
  • @Knight0fDragon - 我如何提高球的速度以使其从一开始就达到 12.6m/s?
  • 尝试在这些数字上加零:applyImpulse(CGVector(dx: 2.0, dy: -2.0)
  • 如何让汽车跑得更快?给它更多的气体。将 applyImpulse 设为更大的数字
  • 我说 2.8 的原因是因为它是 sqrt(2 squared + 2 squared) 并且值不是真的 12.6m/s 我只是不想做数学lol

标签: swift sprite-kit swift3


【解决方案1】:

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

我猜你已经完全复制了你的导师代码,但是球移动得很慢?在这种情况下,问题出在节点 BallCategoryName 本身。我猜这个球在你设计时可能比你的教练更重,教练很可能把它做得更小,所以它移动得更快,几乎没有冲动。 从您拥有的代码来看,您实际上没有重力。所以 PhysicsWorld 中没有重力。我对你的建议是不要考虑重力和冲动,尝试通过改变球的质量来获得正确的质量。这很可能是您和您的导师存在差异的地方。

【讨论】:

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