gpt4 book ai didi

ios - 使用 Sprite Kit 和 Swift 跳跃

转载 作者:可可西里 更新时间:2023-11-01 00:50:41 24 4
gpt4 key购买 nike

我正在 Sprite Kit 和 Swift 中创建一个应用程序,我想创建一个在按下屏幕时向上跳跃的 Sprite ,因此当屏幕被按下得更高时跳得更高。我已经实现了这种效果,但是直到屏幕释放后才应用物理引擎中的重力。因此,跳跃是无限的(呈指数增长),而不是在某一点趋于平稳(如二次方程/抛物线)。

如何在 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))
}
}

注意:物体是左右跳跃而不是上下跳跃

最佳答案

重力应该一直在起作用,而且可能确实如此。然而,当您对每个刻度施加冲量时,这种力比重力强得多。

您需要做的是随着时间的推移减少冲动的影响。这可以通过多种方式实现,例如通过使用 sprite 的位置作为脉冲的基础:sprite 位置越高,脉冲越低。

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 值可能没有意义。但我相信逻辑是相当合理的。你显然需要试验和调整这个(和乘数)以满足你的需要。

关于ios - 使用 Sprite Kit 和 Swift 跳跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39760521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com