我正在设计一款“玩家”必须跳跃的游戏。我有一个有效的跳跃功能,但跳跃非常“线性”。我希望跳跃具有“缓入”和“缓出”功能。
这意味着跳跃的第一部分应该上升得更快,而在“顶部”附近速度会降低,而在向下移动时速度应该会增加。
我已经尝试了一些事情:
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
}
如何进行更“自然”的线性跳跃?
谢谢大家!
尼克。
最佳答案
首先,“线性”跳跃永远不会自然。 您需要对速度应用负加速度。速度的变化将是线性的。 速度公式如下所示: v = v0 - 因子 * t。
t 是时间 v0 将是初始速度,因素是您尝试获得良好效果的因素。 以米每秒为单位的速度和以秒为单位的时间,地球重力系数为 9.81。
关于ios - 如何通过 ease in 和 ease out 创造更自然的跳跃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30267355/