我正在设计一个“玩家”必须跳跃的游戏。我有一个有效的跳跃功能,但跳跃非常“线性”。我希望跳跃能够“缓和”和“缓和”。
这意味着跳跃的第一部分应该更快,而在“顶部”附近的速度会降低,并且在向下移动时速度应该会增加。
我尝试过以下几点:
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
}
如何进行更“自然”的线性跳跃?
谢谢,伙计们!
尼克。
答案 0 :(得分:2)
首先是线性&#39;跳跃永远不会是自然的。 您需要对速度应用负加速度。速度的变化是线性的。 速度公式如下所示: v = v0 - factor * t。
是时间v0将是初始速度,并且因素是您尝试获得良好效果的因素。 以米/秒为单位的速度和以秒为单位的时间,地球的重力因子将为9.81。