Skip to Content
Swift游戏开发经典实例
book

Swift游戏开发经典实例

by Jonathon Manning, Paris Buttfield-Addison
January 2020
Intermediate to advanced
356 pages
6h 4m
Chinese
China Electric Power Press Ltd.
Content preview from Swift游戏开发经典实例
18
1
//
刷新所有物理组件
physicsComponentSystem.update(deltaTime:0.033)
1.5
计算屏幕的帧刷新时间
问题
我们需要计算游戏在两次帧刷新之间的时间是多少秒。
解决方案
首先来看看是什么对象会对游戏帧刷新时间感兴趣。这些对象可能包括视图控制器、
SKScene
GLKViewController
,或者自定义对象。
在这些对象中,需要创建一个实例变量:
class TimeKeeper {
var lastFrameTime : Double = 0.0
}
然后,当游戏刷新时,用当前时间的毫秒数减去
lastFrameTime
的当前值,即可得
到从上次刷新到这次刷新的时间差即“每帧耗时”。
如果想以某种频率或速度进行一些动作(例如,每隔
1
秒移动
3
米),可以用每帧
耗时乘以运动速度:
func update(currentTime : Double) {
//
计算从上次帧刷新到本次帧刷新之间的时间差
let deltaTime = currentTime - lastFrameTime
//
移动速度为:每秒三个单位
let movementSpeed = 3.0
//
deltaTime
乘以移动速度即可得到这一帧应该移动多少距离
//
即公式:时间
*
速度
=
移动距离
someMovingObject.move(distance: movementSpeed * deltaTime)
//
将当前时间保存到
lastFrameTime ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

精通機器學習

精通機器學習

Aurélien Géron
FreeBSD® Unleashed

FreeBSD® Unleashed

Brian Tiemann, Michael C. Urban
深入淺出代數

深入淺出代數

Tracey Pilone, Dan Pilone
Swift学习手册

Swift学习手册

Jon Manning, Paris Buttfield-Addison, Tim Nugent

Publisher Resources

ISBN: 9787519840129