]initWithAVPlayer:_player]; self.vedioNode.size = CGSizeMake(VEDIO_WIDHT, VEDIO_HEIGHT); 第三步 创建一个SKScene 对象 _skScene = [SKScene sceneWithSize:self.vedioNode.size]; self.skScene.scaleMode = SKSceneScaleModeAspectFit ; 第四步 让球体去渲染这个SKScene 对象 [self.skScene addChild:self.vedioNode]; self.vedioNode.position = CGPointMake (VEDIO_WIDHT/2, VEDIO_HEIGHT/2); // 将skscene对象设置为球体渲染的内容 self.renderNode.geometry.firstMaterial.diffuse.contents = self.skScene; 其他功能实现 下面这部分都比较简单 1.监听播放器的当前时间,缓冲时间,视频总时长 self.observerPlayerTime = [self.player
(x: videoNode.size.width/2, y: videoNode.size.height/2) videoNode.zRotation = CGFloat(M_PI) let skScene = SKScene() skScene.addChild(videoNode) skScene.size = videoNode.size 经验: 1.视频添加到项目中的时候,使用右击->add diffuse.contents = skScene 8.第八步 播放视频 videoNode.play() 9.第十步 打开摄像头控制查看效果 scnView.allowsCameraControl
(x: videoNode.size.width/2, y: videoNode.size.height/2) videoNode.zRotation = CGFloat(M_PI) let skScene = SKScene() skScene.addChild(videoNode) skScene.size = videoNode.size 经验: 1.视频添加到项目中的时候,使用右击->add diffuse.contents = skScene 8.第八步 播放视频 videoNode.play() 9.第十步 打开摄像头控制查看效果 scnView.allowsCameraControl
让飞机从屏幕中出现 首先修改我们的GameViewController类,把加载GameScene.sks修改为加载GameScenes.swift类文件 // Load the SKScene from 'GameScene.sks' if let scene = SKScene(fileNamed: "GameScene") { // Present the scene view.presentScene (scene) } ///修改为 // Load the SKScene from class let scene : SKScene = GameScene(size: view.frame.size
直接为我们写好的两个类GameViewController GameScene - (void)viewDidLoad { [super viewDidLoad]; // Load the SKScene from 'GameScene.sks' GameScene *scene = (GameScene *)[SKScene nodeWithFileNamed:@"GameScene"]; 至此我们可以大致了解到了spritekit运行的一个大致框架:SpriteKit是基于Scene(场景)来组织的动画的,每个SKView(用来显示)中可以渲染和管理一个SKScene,每个Scene中可以装载多个 在每一帧开始时,SKScene会调用-update:方法,参数currentTime是当前时间,在该方法中我们可以进行一些刷新的逻辑,或者让node执行action等。 1.新建类MainInterfaceScene是SKScene的子类,创建两个SKLabelNode来进行文字提示。
SKLabelNode 用于渲染文本 SKShapeNode 用于渲染基于Core Graphics路径的形状 SKEmitterNode 用于创建和渲染粒子系统 SKView 对象执行动画和渲染 SKScene RestartLabel *)getInstanceWithSize:(CGSize)size Point:(NSString *)point; - (void)dismiss; - (void)showInScene:(SKScene :size]; [restartView addHighestLabelSize:size]; return restartView; } - (void)showInScene:(SKScene
self.sceneView.showsFPS = YES; //显示界面节点(游戏开发中,一个角色对应一个节点) self.sceneView.showsNodeCount = YES; // Load the SKScene from 'Scene.sks' //加载2D场景(2D是平面的) Scene *scene = (Scene *)[SKScene nodeWithFileNamed:@"Scene
let plane = SCNPlane(width: 0.7, height: 0.35) SKScene 我们需要将平面链接到场景。 let deviceScene = SKScene(fileNamed: "DeviceScene") 平面部分2 让我们通过设置我们的deviceScene的内容来定义我们的平面,把它放在双面并将内容翻译成正确的方向
} .padding(.horizontal, 10) //整体内边距 } } //模仿iOS15天气应用创建"下雨/下雪"动画视图 class RainFall: SKScene node.particlePositionRange.dx = UIScreen.main.bounds.width } } //模仿iOS15天气应用创建"地面雨点"动画 class RainFallLanding: SKScene
一般会渲染两个面,我们需要进行优化,只让它渲染内变表面 2.如何将视频渲染到球体上 1.通过AVPlayer 获取视频流 2.通过SKVedioNode 渲染视频 3.将SKVedioNode添加到SKScene
)或者路径(NSURL) 图片数组(NSArray) 核心动画层(CALayer) 纹理(SKText,MDLTexture,MTLTexture,GLKTextureInfo) 2D 场景(SKScene
如果你有使用 Unity 开发游戏的经验,那么你对 Unity 中深入人心的 Prefab 预制体概念肯定非常熟悉;同样地在 Apple 中开发 2D 游戏,使用 SpriteKit 也会创建很多的子场景: SKScene