如何轻松创建更自然的跳跃并轻松自如?

时间:2015-05-15 19:28:57

标签: ios swift sprite-kit

我正在设计一个“玩家”必须跳跃的游戏。我有一个有效的跳跃功能,但跳跃非常“线性”。我希望跳跃能够“缓和”和“缓和”。

这意味着跳跃的第一部分应该更快,而在“顶部”附近的速度会降低,并且在向下移动时速度应该会增加。

我尝试过以下几点:

var jumpStartTime: CGFloat = 0.0
var jumpCurrentTime: CGFloat = 0.0

var currentDuration = CGFloat(currentTime) - jumpStartTime

但是,我不知道在哪里以及如何开始。

这是我用于线性跳跃的功能。

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    if onGround && !gameOver {
        if self.initialJumpY == nil {
            self.initialJumpY = self.character.position.y
        }

        if self.character.position.y - self.initialJumpY! < 100 {
            self.character.physicsBody?.applyImpulse(CGVectorMake(0, 75))
        } else {
            self.character.physicsBody?.velocity.dy = 0.0
        }
    }

     self.onGround = false

}

override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
    self.character.physicsBody?.velocity.dy = 0.0
    self.initialJumpY = nil
}

如何进行更“自然”的线性跳跃?

谢谢,伙计们!

尼克。

1 个答案:

答案 0 :(得分:2)

首先是线性&#39;跳跃永远不会是自然的。 您需要对速度应用负加速度。速度的变化是线性的。 速度公式如下所示: v = v0 - factor * t。

是时间v0将是初始速度,并且因素是您尝试获得良好效果的因素。 以米/秒为单位的速度和以秒为单位的时间,地球的重力因子将为9.81。