gpt4 book ai didi

ios - swift spritekit 随着游戏时间的推移增加重力?

转载 作者:行者123 更新时间:2023-12-01 19:46:27 26 4
gpt4 key购买 nike

我试图通过随着玩家得分的增加而增加重力来增加游戏的难度。我不完全确定如何实现它,当我在这里尝试使用解决方案时:Any way to speed up gameplay gradually in Swift?

但是,我不确定如何在我的游戏中实现它,以便它逐渐增加重力

这是我的代码:

override func update(_ currentTime: TimeInterval) {
// Altered the gravity drastically
// self.physicsWorld.gravity = CGVector(dx: 0, dy: CGFloat(self.score))
}

最佳答案

我会远离 Timer在这里,因为几个原因......
如果游戏暂停(例如场景或 View 暂停),该解决方案会发生什么情况?当发生不同的中断时(例如电话,或让应用程序因任何原因进入后台......),计时器是否会继续运行。在这些情况下,这个计时器会自动暂停吗,当应用程序返回前台时它会取消暂停(也自动)吗?

简短的回答是:“远离它并使用 SKAction :)”

长答案是:

计时器不会自动暂停/取消暂停。它不与像 SKAction 这样的游戏循环配对。 .当用户返回游戏时,不会像中断前那样具有重力,重力将具有意想不到的值,这可能会在您的游戏中造成一些困惑。因此,正如我所提到的,您需要一个 Timer 类的自定义暂停功能来处理这些情况。但是,与 Timer 的情况不同。类,所有这些都由 SKActions 处理自动地。

您也可以使用 update 方法,但我更喜欢操作,因此您可以使用操作来执行此操作:

import SpriteKit
import GameplayKit

class GameScene: SKScene {

let kStep:CGFloat = 0.01
let kIncreaseActionKey = "kIncreaseActionkey"

override func sceneDidLoad() {

let increase = SKAction.run {[unowned self] in

//Optionally, you can check here if you want to increase the gravity further
self.physicsWorld.gravity.dy -= self.kStep
print("Gravity is now \(self.physicsWorld.gravity)")
}

let wait = SKAction.wait(forDuration: 1)//wait one second before increasing gravity

let sequence = SKAction.sequence([wait, increase])
let loop = SKAction.repeatForever(sequence)
self.run(loop, withKey: kIncreaseActionKey)
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

if self.action(forKey: kIncreaseActionKey) != nil{
self.removeAction(forKey: kIncreaseActionKey)
}
}
}

关于ios - swift spritekit 随着游戏时间的推移增加重力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48273502/

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