[英]Jumping with Sprite Kit and Swift
我正在Sprite Kit和Swift中創建一個應用程序,並希望創建一個Sprite在按下屏幕時會向上跳,因此在將屏幕按下得更高時會跳得更高。 我已經達到了那種效果,但是直到釋放屏幕之后,物理引擎中的重力才被應用。 因此,跳躍是無限的(呈指數增長),而不是在某個點處趨於平穩(如二次方程/拋物線)。
在精靈運動期間如何主動施加重力?
這是我的基本運動代碼:
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
// touched is true while screen is touched
if touched {
nodeLeft.physicsBody?.applyImpulse(CGVector(dx: -5, dy: 0))
}
}
注意:對象正在向左和向右跳躍,而不是向上和向下跳躍
引力應該不斷地工作,也許是。 但是,當您在每個刻度上施加脈沖時,此力比重力要大得多。
您需要做的是隨着時間的流逝減少脈沖的影響。 這可以通過多種方式來實現,例如,通過將子畫面的位置用作脈沖的基礎:子畫面的位置越高,脈沖越小。
if touched {
let minX: CGFloat = 200 // some suitable value
let multiplier: CGFloat = 10
let force = max(0, (nodeLeft.position.x / minX - 1) * multiplier)
nodeLeft.physicsBody?.applyImpulse(CGVector(dx: -force, dy: 0))
}
上面示例中的minX
值可能沒有任何意義。 但是我相信邏輯是合理的。 顯然,您需要嘗試並調整此(和乘數)以適合您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.