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游戏开发经典实例
266
9
9.2
让对象朝某个点移动
问题
我们想让一个对象朝另一个对象运动。
解决方案
将该对象的当前位置减去目标位置,所得结果进行规范化,然后乘以移动速度。然
后,将结果与当前位置相加:
//
计算到达这个位置的方向
var offset = self.position - targetPosition
//
规范化
offset
向量,使其长度和移动速度等长
offset = offset.normalized
offset *= CGFloat(self.movementSpeed) * deltaTime
//
加到当前位置
let newPosition = self.position + offset
self.position = newPosition;
讨论
当你向某个对象移动时,我们需要知道目标方向。目标方向可以通过目标位置减去
当前位置获得,所得结果是一个向量。
假设你当前位置为
(0,5)
,你准备以每秒
1
单位的速度向位置
(1,8)
处移动。则首先
用目标位置减去当前位置:
My Location = [0, 5]
Target Location = [1, 8]
Offset = Target Location - My Location
= [1, 8] - [0, 5]
= [1, 3]
但是,这个向量的长度会受目标位置距离远近的影响。如果我们想以匀速向目标移
动,我们需要让这个向量的长度为
1
然后乘以移动速度。
人工智能和行为
267
记住,对一个向量进行单位化( ...
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