ARKit之SpriteKit2D简单使用

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

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值