引言:
DDWC上演示了ARKit的强大功能后,我决定把我心爱的6s升级到iOS11来试试ARKit的功能。
想体验ARKit的功能,首先必须是iOS11+Xcode9+A9以上的设备。具备以上条件,就可以开工啦。
github链接:https://github.com/HZhenF/MyApp2D.git
开篇,我们来谈谈iOS11的初体验吧。
说实在的,我觉得iOS11界面好丑,一些字体也粗糙了不少,更趋向于安卓手机的界面了。更让我不能理解的是,为什么iOS手机会有“文件”这个功能?难道要和安卓一样,可以手动管理自己的文件和系统文件了?如果不是,那么要这个功能干嘛?就像WWDC新版iPad为什么要用一个文件管理?可能小弟不才,见识浅陋,但是,界面我真的觉得丑了不少。
- App Store说了要改的,目前只看到图标改了
- 控制中心可以自定义了。
- 信息可以发送图片、视频等等,和WWDC说的差不多。
- 每次截图后,截图都会自动在手机左下角停留。你可以点击它来编辑截图内容。
不说了。。。简单看看图就知道了。
扯远了,扯远了。
我们开始今天的重点内容吧,本文只谈论SpriteKit2D的简单实用,3D的下次再谈。
- (void)viewDidLoad {
[super viewDidLoad];
// Set the view's delegate
self.sceneView.delegate = self;
// Show statistics such as fps and node count
//显示帧率
self.sceneView.showsFPS = YES;
//显示界面节点(游戏开发中,一个角色对应一个节点)
self.sceneView.showsNodeCount = YES;
// Load the SKScene from 'Scene.sks'
//加载2D场景
Scene *scene = (Scene *)[SKScene nodeWithFileNamed:@"Scene"];
// Present the scene
//AR预览视图展现场景
[self.sceneView presentScene:scene];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// Create a session configuration
//创建设备追踪设置,万恶之首,之所以要A9以上的设备,全是因为它
ARWorldTrackingSessionConfiguration *configuration = [ARWorldTrackingSessionConfiguration new];
// Run the view's session
//启动AR
[self.sceneView.session runWithConfiguration:configuration];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// Pause the view's session
//暂停AR
[self.sceneView.session pause];
}
/**
点击界面会调用该方法,出现一个你要创建的节点内容
@param view 2D的预览视图
@param anchor 锚点,可以和UILayer的锚点联系起来理解
@return 返回一个节点
*/
- (SKNode *)view:(ARSKView *)view nodeForAnchor:(ARAnchor *)anchor {
// Create and configure a node for the anchor added to the view's session.
SKSpriteNode *ssn = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImage:[UIImage imageNamed:@"IMG_3977.PNG"]]];
//SKSpriteNode对象的x,y轴的位置信息
ssn.position = CGPointZero;
//锚点
ssn.anchorPoint = CGPointMake(0.5, 0.5);
//SKSpriteNode对象的宽度和高度信息的设置
ssn.size = CGSizeMake(30, 30);
//SKSpriteNode对象的名字,也就是SKSpriteNode对象的唯一标识符
ssn.name = @"动漫小女孩";
NSArray *emojiArray = [NSArray arrayWithObjects:@"��",@"��",@"��",@"��",@"��",@"��",@"��", nil];
NSString *str = emojiArray[arc4random()%(emojiArray.count - 1)];
SKLabelNode *labelNode = [SKLabelNode labelNodeWithText:str];
labelNode.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter;
labelNode.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;
NSMutableArray *arrM = [NSMutableArray array];
[arrM addObject:labelNode];
[arrM addObject:ssn];
return arrM[arc4random()%2];
}
简单的提醒:
点击屏幕,可以创建出不同的小动物和自定义的图片。
数组里面其实放的是各种小动物的,然后我们每点击一次屏幕,就随机取出里面的东西。
SKLabelNode这个节点用类方法初始化,只能放NSString的内容。
想要放自定义的图片,就用SKSpriteNode这个类。