
263
第 9 章
人工智能和行为
只有能够给玩家带来挑战的游戏才是真正的好游戏。有许多方法可以使游戏具有挑
战性,如复杂的解谜题目;但是真正的挑战应该是给玩家创建一个敌人,玩家必须
想尽一切办法,才能获得最终胜利,这会给玩家带来一种无法言喻的满足感,以及
那种只有经过努力才能获得的成就感。
本章,将介绍如何让对象移动
,如何让对象追逐和躲避目标,如何找到两点之间
的最短路径,以及如何设计一个有预判能力的人工智能系统。
9.1 Swift
使向量计算更轻松
问题
我们有一个
CGPoint
集合,我们想对它们进行
+
、
-
、
*
、
/
运
算。我们还想将
CGPoint
当成向量来用,并能够获得它们的长度或单位向量。
解决方案
利用
Swift
的运算符重载,让两个
CGPoint
或者一个
CGPoint
和一个标量(如
CGFloat
)进行运算:
/*
两个点相加
*/
func + (left: CGPoint, right : CGPoint) -> CGPoint {
return CGPoint(x: left.x + right.x, y: left.y + right.y)
}