《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上都能够平滑地移动,可以从屏幕弹回并且会旋转,是开始玩这个游戏的最佳时机了。但是,我们还没有大功告成。应该自己尝试一些内容,以确定已经学到了知识。

相关文章
|
存储 编解码 vr&ar
苹果官宣 WWDC22 : 6 月 6 日线上见!iOS 16、watchOS 9 和 tvOS 16 要来了吗?
苹果官宣 WWDC22 : 6 月 6 日线上见!iOS 16、watchOS 9 和 tvOS 16 要来了吗?
348 0
苹果官宣 WWDC22 : 6 月 6 日线上见!iOS 16、watchOS 9 和 tvOS 16 要来了吗?
|
iOS开发
iOS开发UI篇 - Quartz 2D简单使用
iOS开发UI篇 - Quartz 2D简单使用
iOS开发UI篇 - Quartz 2D简单使用
|
存储 监控 安全
[iOS研习记]——聊聊野指针与僵尸对象定位
在iOS项目开发中,或多或少的我们都会遇到一些Crash的情况,大部分Crash抛出的异常都是NSException层的,这类异常是OC层代码问题造成的,通常堆栈信息和异常的提示信息都非常明确,可以直接定位到出问题的代码,从而使这类问题的解决并不困难。可以引起Crash的异常除了NSException外,还有Unix层和Mach层的异常。
2384 0
|
API 图形学 iOS开发
IOS开发应用之Quartz 2D学习指南
引用:http://mobile.51cto.com/iphone-284414.htm IOS开发应用之Quartz 2D学习指南是本文要介绍的内容,主要是来学习Quartz 2D的使用方法和操作。
1107 0
|
iOS开发
【Xamarin.iOS】tvOS简介
最近,苹果公司宣布推出AppleTV 4K,这是2015年推出的AppleTV的改进版本,为我们带来了一个在tvOS上开发的新平台。 借助支持触摸的Siri遥控器,我们有了一种与大屏幕上的应用程序进行交互的新方式,这种方式是不同的,但并不完全陌生。
1841 0
|
iOS开发
iOS - Quartz 2D 下载进度按钮绘制
1、绘制下载进度按钮 具体实现代码见 GitHub 源码 QExtension QProgressButton.h @interface QProgressButton : UIButton /// 进度值,范围 0 ~ 1 @property (nonatomic, ...
1293 0
|
iOS开发
iOS - Quartz 2D 手势截屏绘制
1、绘制手势截屏 具体实现代码见 GitHub 源码 QExtension QTouchClipView.h @interface QTouchClipView : UIView /** * 创建手势截屏视图控件,获取截屏结果 * * @par...
1403 0
|
iOS开发
iOS - Quartz 2D 画板绘制
1、绘制画板 1.1 绘制简单画板 PaintBoardView.h @interface PaintBoardView : UIView @end PaintBoardView.
1148 0
|
iOS开发 数据格式
iOS - Quartz 2D 第三方框架 Charts 绘制图表
1、Charts 简介 使用第三方框架 Charts 绘制 iOS 图表。GitHub 源码 Charts Charts 是一款用于绘制图表的框架,可以绘制柱状图、折线图、K线图、饼状图等。Charts 只有 Swift 版本。
3036 1
|
iOS开发 图形学
iOS - Quartz 2D 贝塞尔曲线
1、贝塞尔曲线 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。
1562 0

热门文章

最新文章