ARKit之SpriteKit2D简单使用

来源:互联网 发布:linux实现nat网关功能 编辑:程序博客网 时间:2024/05/21 06:43

引言:
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这个类。

这里写图片描述

原创粉丝点击