SpriteKit与arkit结合炸弹小游戏
来源:互联网 发布:中国太岁网淘宝店 编辑:程序博客网 时间:2024/06/04 13:13
Spritekit介绍
http://www.jianshu.com/p/0427dc183ca8
SKNode & SKScene
属性:
Position: node 定位在坐标系中的位置
xScale & yScale 尺寸的缩放
zRotate: 旋转节点
Frame: 节点包含的矩形
Accumulated: 积累
Alpha: 透明度
isHidden: 是否可见
ignoresSiblingOrder:判別相同位置的两个 node 他们是否并存 默认是不并存的 false 如果改成 true 则都可以看到,那么假设说在 true 情況下,我们想要遮住他們的話,可以修改他们的 zPosition 数字比較大的会在上面
SKACtion:
runAction: 执行动作
runActionWithKey: 执行动作并且分配一个 key
runActionComlietion: 添加完成处理程序集体的动作
Sequence: 子操作在另一個操作之后运行
Group: 子操作跟他同时进行
Repeat: 子操作运行行一定或是无线的循环操作
—————————-
hasAction: 当物件本身有操作的時候,我才进行子操作
PhysicsWorld:
将重力定义CGVector
SKPhyicsBody: 基于我们的物件所具有质量和提及的动态体
myTextureSpriteNode.physicsBody?.allowsRotation = true//是否改变重力冲击的方向
myTextureSpriteNode.physicsBody?.restitution = 1.0
// restitution 每次的碰撞中损失了多少动力,默认 0.2
游戏介绍
点击炸弹,炸弹消失,超过5s没有点击 ,发生爆炸
效果图
新建项目
新建项目选择game
选择spritekit
设置追踪镜头
let configuration = AROrientationTrackingConfiguration()//追踪镜头的位置,只有三个自由度 速度比较快
编写核心Scene
代码很简单,看下就明白了
“`
//
// Scene.swift
// SpriteKitInAr
//
// Created by Liyanjun on 2017/10/10.
// Copyright © 2017年 liyanjun. All rights reserved.
//
import SpriteKit
import ARKit
class Scene: SKScene {
var playing = false//是否在play//计时器var timer = Timer()//分数var score = 0override func didMove(to view: SKView) { // Setup your scene here}override func update(_ currentTime: TimeInterval) { // Called before each frame is rendered}func displayMenu(){ /** SKLabelNode: 一种 label 來使用的 node name??? */ let logoLabel = SKLabelNode(fontNamed: "AvenirNext-Bold") logoLabel.fontSize = 50.0 logoLabel.text = "Game Over!" logoLabel.verticalAlignmentMode = .center logoLabel.horizontalAlignmentMode = .center logoLabel.position = CGPoint(x: frame.midX, y: frame.midY + logoLabel.frame.size.height) logoLabel.name = "Menu" self.addChild(logoLabel) let infoLabel = SKLabelNode(fontNamed: "AvenirNext-Bold") infoLabel.fontSize = 50.0 infoLabel.text = "你被炸飞了" infoLabel.verticalAlignmentMode = .center infoLabel.horizontalAlignmentMode = .center infoLabel.position = CGPoint(x: frame.midX, y: frame.midY - infoLabel.frame.size.height) infoLabel.name = "Menu" self.addChild(infoLabel) // 最高分 let higthtScore = SKLabelNode(fontNamed: "AvenirNext-Bold") higthtScore.fontSize = 50.0 higthtScore.text = "最高分:\(UserDefaults.standard.integer(forKey: "HighestScore"))" higthtScore.verticalAlignmentMode = .center higthtScore.horizontalAlignmentMode = .center higthtScore.position = CGPoint(x: frame.midX, y: infoLabel.frame.midY - higthtScore.frame.size.height * 2 ) higthtScore.name = "Menu1" //?? self.addChild(higthtScore) //点击屏幕从新开始 let beginAgain = SKLabelNode(fontNamed: "AvenirNext-Bold") beginAgain.fontSize = 30.0 beginAgain.text = "点击屏幕从新开始" beginAgain.verticalAlignmentMode = .center beginAgain.horizontalAlignmentMode = .center beginAgain.position = CGPoint(x: frame.midX, y: higthtScore.frame.midY - beginAgain.frame.size.height*2) beginAgain.name = "Menu1" self.addChild(beginAgain)}//添加炸弹func addBomd() { guard let sceneView = self.view as? ARSKView else { return } //判断镜头的位置 if let currentFrame = sceneView.session.currentFrame { let xOffset = Float(arc4random_uniform(UInt32(10)))/10 - 1.5 let zOffset = Float(arc4random_uniform(UInt32(30)))/10 + 0.5 var transFrame = matrix_identity_float4x4 transFrame.columns.3.x = currentFrame.camera.transform.columns.3.x - xOffset transFrame.columns.3.z = currentFrame.camera.transform.columns.3.z - zOffset transFrame.columns.3.y = currentFrame.camera.transform.columns.3.y let archor = ARAnchor(transform: transFrame) sceneView.session.add(anchor: archor) } timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(explode), userInfo: nil, repeats: false)}@objc func explode(){ //游戏结束 timer.invalidate()//暂停计时器 if UserDefaults.standard.integer(forKey: "HighestScore") < score { UserDefaults.standard.set(score, forKey: "HighestScore") } //数一下有是多少炸弹 for node in children{ if let node = node as? SKLabelNode, node.name == "Bomb"{ node.text = "
- SpriteKit与arkit结合炸弹小游戏
- 【Java】炸弹人小游戏
- SpriteKit实现的小游戏ColorAtom
- android-Image与Button结合的小游戏
- 让人流口水!当苹果 ARKit 与点餐应用结合在一起
- SpriteKit与SceneKit
- SpriteKit
- ARKit
- ARKit
- SpriteKit学习笔记(六)关于SpriteKit与cocos2d
- SpriteKit学习笔记(六)关于SpriteKit与cocos2d
- 水果与炸弹
- 【1】coreML入门之结合ARKit场景展示
- 炸弹
- 炸弹
- 炸弹
- 炸弹
- 炸弹
- gdb x察看内存
- 负载均衡进阶:SLB常见问题解决方法
- 全表扫描和索引扫描的区别
- 【2017.10.10】安卓开发环境搭建.原创
- 打印三角形
- SpriteKit与arkit结合炸弹小游戏
- json解析数组和对象
- 如何学习编程——来自认知科学的四个建议
- 简单工厂模式实现家务
- 金蝶K3投料及MRP运算取整参数设置
- 创建型设计-抽象工厂
- 百度地图
- unity开发之二:调用电脑外部键盘osk
- SPOJ IM 962 网络流最大流 解题报告