iphone - 在 Xcode 中加速 NSTimer

标签 iphone objective-c cocoa nstimer

我正在开发一个名为 MetorideStorm 的小应用程序。这是一个非常简单的游戏,其中一些墙壁需要每秒向下移动。现在游戏需要变得更加困难,墙壁需要更快地折叠。我怎样才能做到这一点?我可以制作一个 float 并用它控制 NSTimer 吗?

从前,该游戏适用于 iPhone,但我不知道这是否重要。我对 iPhone 和 iPad 编程非常陌生,所以我还不太了解。

谢谢 - Frederik Witte

最佳答案

如果我要重新表述你的问题,我会这样说。我有一组墙,每堵墙都需要有一个基于难度的速度。在给定时间,每面墙的位置需要根据其速度进行更新。

一般来说,您不想改变此更新发生的时间,因为考虑帧速率,运动可能会开始看起来不稳定。如果您看过《学习 iPhone 和 iPad cocos2d 游戏开发》一书,Steffen Itterheim 甚至建议始终假设恒定的帧速率。争论的焦点是,在正常游戏过程中,您确实需要恒定的帧速率。在帧速率可能下降的情况下(例如,有一封电子邮件传入,iPhone 必须进行额外的处理),您不希望任何运动跳得太远。话虽这么说,最好在这么短的时间内,事情进展缓慢,然后恢复到用户中断之前的位置。

因此,与其改变 NSTimer 的间隔,不如改变移动的距离。设置一个变量来保存壁的速度。将计时器设置为合理的值(1/60 是一个不错的选择)。然后在计时器的回调中根据速度更新墙的位置。

当然,这仅适用于您正在滚动自己的游戏引擎的情况。如果您使用的是 cocos2d 那么您应该真正使用 CCDirector 的调度程序,因为当导演暂停/恢复等时使用您自己的 NSTimer 会导致问题...如果您不使用 cocos2d 我建议您研究一下它,因为它会为你处理这类事情。

关于iphone - 在 Xcode 中加速 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614068/

相关文章:

ios - 复杂 UITableViewCell 的问题

iphone - Apple 应用内购买 - 检索特定地区的价格

objective-c - 是否有可用于描述人的 Cocoa 初始值设定项?

macos - isDirectory 参数是否为 +[NSURL fileURLWithPath :isDirectory:] need to be correct?

objective-c - NSCollectionView 不显示其内容

swift - NSWorkspace 的 'frontmostApplication' 在初次使用后不会改变

ios - 将相册中的照片添加到应用程序中以在 tableView 中显示 - IOS

iphone - 可以访问 iPhone 用户的音乐和视频

ios - 如何在 Objective-C 中使用多个参数调用 Swift 初始化方法

javascript - 如何从React-Native向Native发送参数