簡體   English   中英

使用Sprite Kit和Swift跳躍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM