按压停止时,不仅记录了停止时光、计算时光差,也根据时光差来对瓶子进行移动:
- override func touchesEnded(_ touches: Set, with event: UIEvent?) {
- ...
- // 记录停止时光
- touchTime{Pair.end = (event?.timestamp)!
- // 计算两者时光差
- let distance = distanceCalculateClosure(touchTimePair.end - touchTimePair.begin)
- // 根据两种偏向,决定移动的偏向
- var actions = [SCNAction()]
- if nextDirection == .left {
- let moveAction1 = SCNAction.moveBy(x: distance, y: kJumpHeight, z: 0, duration: kMoveDuration)
- let moveAction2 = SCNAction.moveBy(x: distance, y: -kJumpHeight, z: 0, duration: kMoveDuration)
- actions = [SCNAction.rotateBy(x: 0, y: 0, z: -.pi * 2, duration: kMoveDuration * 2),
- SCNAction.sequence([moveAction1, moveAction2])]
- } else {
- let moveAction1 = SCNAction.moveBy(x: 0, y: kJumpHeight, z: distance, duration: kMoveDuration)
- let moveAction2 = SCNAction.moveBy(x: 0, y: -kJumpHeight, z: distance, duration: kMoveDuration)
- actions = [SCNAction.rotateBy(x: .pi * 2, y: 0, z: 0, duration: kMoveDuration * 2),
- SCNAction.sequence([moveAction1, moveAction2])]
- }
- ...
为了模仿微信跳一跳的动画效不雅,应用了 SCNAction 的 group 和 sequence 办法。个中 group 指的昵嘟个动作并行进行,sequence 则是两个动作持续进行。所以最终叠加的效不雅是如许的:

紧接着膳绫擎的代码,我们对瓶子进交活动,并且在它活动停止之后,进行游戏有没有掉败的断定。
同样,也就是在这里,进行下一?方块的生成。
推荐阅读
还在用浏览器内的「保存密码」功能?你的密码可能被黑客记下来了
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?安然研究人员发明,营销公司已经开端应用浏览器内置暗码治理器中已存在 11 年的一个马脚,来偷偷盗取你的电子邮件地址,>>>详细阅读
本文标题:用ARKit做一个仿微信"跳一跳"游戏
地址:http://www.17bianji.com/lsqh/40272.html
1/2 1