天天看点

《iOS和tvOS 2D游戏开发教程》——第2章,第2.3节旋转僵尸

本节书摘来自异步社区《ios和tvos 2d游戏开发教程》一书中的第2章,第2.3节旋转僵尸,作者 【美】raywenderlich.com教程开发组,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.3 旋转僵尸

僵尸移动的很不错,但是它总是朝着相同的方向。实际上,它是“亡灵”,但是,这个僵尸总是对什么都好奇,它很想在移动的时候转身到处看看。

我们已经有了一个向量指向僵尸所要朝向的方向,这就是速度向量。只需要找出一个旋转角度,让僵尸朝向该方向就可以了。

再一次,把方向向量当做是直角三角形的斜边,就可以找到这个角度,如图2-22所示。

《iOS和tvOS 2D游戏开发教程》——第2章,第2.3节旋转僵尸

图2-22

你可能还记得,三角学中所谓的正切函数,表示为:

既然有了对边和邻边的长度,可以将上面的公式重写为如下的形式,来得到需要旋转的角度:

如果回忆不起来任何三角学的知识,也不要担心。只要把这当做是计算角度的一个公式就可以了,只需要知道这些就够了。

尝试使用这个公式,添加如下的新的方法:

这里用到了上面的公式。它包括很多的强制转型,因为cgfloat在64位的机器上定义为一个double,而在32位的机器上则定义为一个float。

这能够有效,是因为僵尸图像本身是朝向右边的。如果僵尸图像是朝向屏幕上方的,还必须添加一个额外的旋转来进行补偿,因为角度0本来是指向右边的。

现在,在update()方法的末尾调用这个新的方法。

编译并运行,僵尸已经旋转到面朝它移动的方向了,如图2-23所示。

《iOS和tvOS 2D游戏开发教程》——第2章,第2.3节旋转僵尸

图2-23 

恭喜你,已经让僵尸具有了生命了!这个精灵现在在iphone和ipad上都能够平滑地移动,可以从屏幕弹回并且会旋转,是开始玩这个游戏的最佳时机了。但是,我们还没有大功告成。应该自己尝试一些内容,以确定已经学到了知识。