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

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

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

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

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


e08eddbe0e61c2397931143caabda5b4acdc4b97

图2-22

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

tan(angle) = opposite / adjacent

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

angle = arctan(opposite / adjacent)

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

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

func rotateSprite(sprite: SKSpriteNode, direction: CGPoint) { 
   sprite.zRotation = CGFloat(
      atan2(Double(direction.y), Double(direction.x)))
}

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

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

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

rotateSprite(zombie, direction: velocity)

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


07d6c2868a5fe083f7fbce6dc462268258e0fad3

图2-23 

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

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/92260

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。