那么在将来可以有哪些改进的处所呢?
- 起首,坐标轴的偏向最好可以改变,比如每次均以用户当前手机面向的地位为 x 轴。
- 其次,在动画效不雅、美不雅水平和声音效不雅上可以做一些改进或加强。
- 最后,如不雅可以打破二维平面上的模式,甚至跟实际世界的物体结合来跳一跳,就更完美啦。
0. 媒介
比来微信推出的小法度榜样“跳一跳”真的火爆全国,作为开辟者看到今后,不禁想到:能不克不及把它和 ARKit 结合一下,在 AR 的场景下玩一玩呢?于是就有了这个 idea。借着之前的经验,也就有了如今的┞封个demo:ARBottleJump。下面就来简单介绍一下若何做出如许的一个小游戏。
1. 预告常识
起首,我们要对 SceneKit 和 ARKit 有必定的基本懂得。对于 SceneKit,你至少要知道:SCNNode、 SCNGeometry、SCNAction、SCNVector3 等最基本的类和他们的常用属性、办法(可以拜见 Apple 文档)。如不雅对 ARKit 还不太熟悉,那么可以看看我之前写的一片文┞仿:ARKit 初探。
当你预备好了,就让我们进入正题吧!
可以看出,当点击的地位可以成功经由过程点击测试办法获得至少一个地位时,这个地位就是我们要生成/开端游戏的处所。接着先调用一次 generateBox(_:) 在这个地位生成一个方块,然后在这个方块上加上棋子 addConeNode(),最后再生成一个瓶子要跳去的方块。
2. 整体思路
我把做这个小游戏的步调分为以下几个子步调:
- 放置方块
- 让婵子跳
- 断定游戏掉败
我们知道,在 ARKit 中对于实际世界有一个三维坐标系。而经由过程不雅察微信的“跳一跳”,可以发明下一?方块放置的地位要么是当前方块的左边,要么是右边。出于简化的目标,我们就让方块都放在该坐标系的 XZ 平面上,并且每次随机决定是往 x 照样 z 轴偏向延展。示意图如下:

个中蓝色都代表依次生成的方块,可以看出它们的生成路径(红色箭头)都是平行于 x 或 z 轴的。
2.1 放置方块
起首,建立一个新列举类,列举下一?方块可能的偏向:
- // 随机偏向列举
- enum NextDirection: Int {
- case left = 0
- case right = 1
- }
然后声明一个数组,记录所有的已经出现的方块:
- private var boxNodes: [SCNNode] = []
最后是生成方块的办法:
- private func generateBox(at realPosition: SCNVector3) {
- // 生成一个方块
- let box = SCNBox(width: kBoxWidth, height: kBoxWidth / 2.0, length: kBoxWidth, chamferRadius: 0.0)
- let node = SCNNode(geometry: box)
- // 给方块上色
- let material = SCNMaterial()
- material.diffuse.contents = UIColor.randomColor()
- box.materials = [material]
- // 如不雅方块数量为空,解释在初始化游戏,直接把方块地位放在你点击的地位
- if boxNodes.isEmpty {
- node.position = realPosition
- } else {
- // 如不雅不为空,那么解释游戏正在进行中
- // 先随机生成一个偏向
- nextDirection = NextDirection(rawValue: Int(arc4random() % 2))!
推荐阅读
还在用浏览器内的「保存密码」功能?你的密码可能被黑客记下来了
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?安然研究人员发明,营销公司已经开端应用浏览器内置暗码治理器中已存在 11 年的一个马脚,来偷偷盗取你的电子邮件地址,>>>详细阅读
本文标题:用ARKit做一个仿微信"跳一跳"游戏
地址:http://www.17bianji.com/lsqh/40272.html
1/2 1