我對swift相當陌生,並且一直致力於開發一款遊戲以獲得樂趣,並且我遇到了一些無法擺脫困境的東西。SpriteKit跳躍和移動問題
當按下運行按鈕,字符用下面的函數
func move(dt: CGFloat) {
position.x += moveRate * dt
}
,並按下跳躍鍵時,字符用下面的函數
func jump() {
physicsBody?.applyImpulse(CGVector(dx: 0, dy: jumpRate))
run(jumpAnimation!)
}
都工作跳躍向前移動好,但考慮一下這個塞納里奧。玩家正在跑步,然後在仍然移動時跳躍。在空中時,玩家釋放移動按鈕,玩家的x位置停止。這顯然感覺非常不自然,我希望玩家的x位置能夠緩解。
現在我也玩過physicsBody?.applyForce(CGVector(dx: 1000, dy: 0))
這個效果,但他似乎只是獲得了越來越多的速度,而且你沒有得到恆定的速度或「最大速度」這麼說。
有人能跟我分享一些見解嗎?我很想學習一些關於spritekit和遊戲開發的知識。謝謝!
從我所看到的,在使用力量的同時手動改變位置的方式從未奏效。嘗試只使用力量或通過影響其位置屬性來改變節點的位置。另外,在update:method,每一幀內都應該調用施加的力(與applyImpulse方法不同)。 – Whirlwind
即使直接改變速度矢量,同時使用力量和衝動將會很好地發揮,所以也許你可以玩... – Whirlwind
一直玩的物理bodyBody更多的所有對象。它似乎很挑剔,但我用'applyForce'和'applyImpluse'創造了一個更好的結果。 「直接改變速度矢量」是什麼意思? –