场景的切换
学习目标
掌握SceneKit 游戏框架中的几种场景以及如何使用它们。
开始吧
场景切换,你应该想到的更换Scene,最简单的方式就是下面这种写法
self.scnView.scene = scene;
运行一下结果,和我们的预期一模一样。你学会了吧,很简单吧!不过就是有点挫而已,那我们怎么让它变的不这么low,就是给它添加过渡动画,目标明确那就去找方法。SCNScene 是SCNView的属性,那就去它里面找方法
- (void)presentScene:(SCNScene *)scene withTransition:(SKTransition *)transition incomingPointOfView:(nullable SCNNode *)pointOfView completionHandler:(nullable void (^)())completionHandler NS_AVAILABLE(10_11, 9_0);
参数说明:
- scene 你要切换到的场景
- transition 过渡动画类型
- pointOfView 切换到的场景中的照相机节点
- completionHandle 完成后的block块
有一个参数我要说一下,transition 过渡动画类型 你会发现他是SKTransition 这个是什么类型呢? 悄悄的告诉你,苹果还有一个2D 游戏框架(SpriteKit) 这个类就是它里面的
+ (SKTransition *)crossFadeWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)fadeWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)fadeWithColor:(SKColor *)color duration:(NSTimeInterval)sec;
+ (SKTransition *)flipHorizontalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)flipVerticalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)revealWithDirection:(SKTransitionDirection)direction duration:(NSTimeInterval)sec;
+ (SKTransition *)moveInWithDirection:(SKTransitionDirection)direction duration:(NSTimeInterval)sec;
+ (SKTransition *)pushWithDirection:(SKTransitionDirection)direction duration:(NSTimeInterval)sec;
+ (SKTransition *)doorsOpenHorizontalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)doorsOpenVerticalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)doorsCloseHorizontalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)doorsCloseVerticalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)doorwayWithDuration:(NSTimeInterval)sec;