gpt4 book ai didi

swift - 如何使物体跳跃并降落在移动平台上

转载 作者:行者123 更新时间:2023-11-30 10:15:44 24 4
gpt4 key购买 nike

我正在开发一款跳跃式 iOS 游戏,其中“玩家”会随着波浪移动。它应该能够在波浪上跳跃和着陆。 在当前版本中,它会跳跃,但不会向下移动。

当平台不移动时它确实可以工作,但移动平台对于应用程序至关重要。

谢谢大家!

代码

平台“characterBaseline”正在基于此功能移动

wave.bar.position.y = CGFloat(Double(wave.bar.position.y) + createSinWave(angle))

func createSinWave(angle:Double) -> Double {

var sinWave = sin(angle)

return sinWave

}

玩家的跳跃和移动基于以下函数

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

if self.onGround {
self.velocityY = -14.0
self.onGround = false
}
}

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

if self.velocityY < -7.0 {
self.velocityY = -7.0
}

}

override func update(currentTime: NSTimeInterval) {

// Character op wave
self.character.position.y = CGFloat(Double(self.character.position.y) + createSinWave(angle))
self.characterBaseline = self.character.position.y

// Jump
self.velocityY += self.gravity
self.character.position.y -= velocityY

if self.character.position.y < self.characterBaseline {
self.character.position.y = self.characterBaseline
velocityY = 0.0
self.onGround = true
}

// Golf
updateWaveBarPosition()

}

最佳答案

您需要了解 self.gravity 设置为多少以及在 TouchsEnded 后产生的 VelocityY 是多少,这很可能是问题的根源

顺便说一句,您不使用内置物理功能的原因是什么?

使用 SpriteKit 的原生物理引擎创建跳跃 Action 非常容易。

您只需为每个 Sprite (玩家和平台)添加一个物理主体

self.player.physicsBody = SKPhysicsBody(bodyWithRectangleOfSize:self.player.size)

一旦发生这种情况,您可以在 TouchsBegan 中运行类似的操作:

self.player.physicsBody.applyImpulse(0, 100)

这将为你的玩家提供 100 的提升(你可以调整它以适应你希望你的玩家跳多高)。重力将为您解决剩下的问题。

关于swift - 如何使物体跳跃并降落在移动平台上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30102533/

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