⑴ 如何改变spritekit 节点大小
苹果带来的 SpriteKit 不仅仅只是增加了制作2D游戏的 API,还在 Xcode5 中集成了包括 Texture Atlas 和粒子系统等等专为 SpriteKit 服务的插件。本文将介绍如何在 SpriteKit 中使用 Texture Atlas和需要注意的一些问题,这个主题将分为两部分来介绍,本文是第一部分。
Texture Atlas
Texture Atlas,又称为 SpriteSheet,是游戏开发里非常常用的一种图片技术。简单的说,就是将多个图片整合到一张大图上,在使用图片时通过从大图上截取需要的部分来绘制正确的图形的技术。作为游戏开发者,如果你还不知道 TextureAtlas 是什么,或者为什么要使用 Texture Atlas,请观看下面的视频。用一句话来说,就是为了加快绘制速度和节约内存使用。
制作 Texture Atlas
⑵ 苹果官方提供的 SpriteKit 等游戏开发 SDK 和 cocos2d 游戏引擎各自有哪些优劣势
SpiritKit不能跨平台,而且需要ios7+,没有cocos那末强大的动画编辑器。目前没有足够多的开发者、代码资源和相干社区。对国外新加入行业或产品类型创意较强类型多变、专注于ios的游戏开发者,可能会采取SpriteKit。但在国内必须跨平台的环境下,cocos的地位稳如泰山。
⑶ 如何用Sprite Kit制作《太空入侵者》
作者:Joel Shapiro
注:这是作为iOS 7 Feast的组成部分而发布的全新Sprite Kit教程。
在第1部分中,你创造了游戏的基础。到目前为止你已经在游戏中添加了侵略者,舰船和平视显示器(HUD)。你还编写了逻辑代码让侵略者可以自动移动并在倾斜设备时移动舰船。
在第2部分也是最后一部分中,你将为舰船和外星人添加能力让它们相互开火!你同样也将添加音效和真实图像去替代彩色的矩形(游戏邦注:即用于代表侵略者和舰船)而优化游戏
现在让我们真正开始吧。
让你的舰船发射激光炮
首先,你需要思考自己想要的发射舰船激光炮的场景。你决定使用单发快射去发射大炮。但是你该如何检测这些单发快射?
你拥有两个选择:
1.UITapGestureRecognizer—-创造一个并将其附加到场景视图中。
2.touchesEnded:withEvent:—-你的场景是UIResponder的子类;因此你可以使用它直接检测碰触。
在这种情况下(touchesEnded:withEvent:),第二种方法是最佳选择。当你需要基于游戏中不同场景节点检测并处理碰触时,第一种方法会较为棘手,因为你只能够在场景视图中为UITapGestureRecognizer制定一个回调函数选择器。而其它方法则不适合放在这一例子中。
因为所有的SKNode节点(包括SKScene)都能通过touchesEnded:withEvent:直接处理碰触,第二种选择能够更自然地处理针对于节点的碰触—-当你开发的游戏带有更复杂发射处理时它将更有效。
既然你将在场景的touchesEnded:withEvent:方法中检测用户的发射,你该在这方法中做些什么?
发射可以在游戏过程中的任何一个点发生。与之相反的是你的场景将发生改变—-源自update:方法的独立间隔。所以在touchesEnded:withEvent:中任何时候你将如何储存快射检测,并在之后,也就是当被Sprite Kit游戏循环援用时对其进行加工。
答案是一个队列!你将使用一个简单的NSMutableArray在FIFO(先进先出)队列中储存你的快射。
在GameScene.m添加如下属性到类扩展中:
@property (strong) NSMutableArray* tapQueue;
现在将如下内容添加到didMoveToView:中,也就是在[self.motionManager startAccelerometerUpdates];后面:
self.tapQueue = [NSMutableArray array];
self.userInteractionEnabled = YES;
上述代码将快射队列初始化为一个空白数组,并确保用户互动适用于场景中,从而让它能够接收快射事件。
现在在#pragma mark – User Tap Helpers之后添加如下代码:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// Intentional no-op
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
// Intentional no-op
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
// Intentional no-op
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
if (touch.tapCount == 1) [self.tapQueue addObject:@1];
}
前三个问题只是无意义的存根;之所以会添加它们是因为当你没有调用super而推翻touchesEnded:withEvent:时,苹果会建议你这么做。
touchesEnded:withEvent:方法本身非常简单。它只添加了一个条目到队列中。你不需要定制类在队列中储存快射,因为你所需要做的便是明确快射的出现。因此,你可以使用任何早旧的对象。在此,你可以将整数1作为当一快射的记忆(@1是全新的对象-文字语言,即将把文字1转变为一个NSNumber对象)。
因为你知道侵略者最终将向你的舰船发射子弹,所以在文件最上方的Custom Type
⑷ 如何在 Swift 3 中用 SpriteKit 框架编写游戏
Metal和OpenGL ES类似,暂不支持自定义的OpenGL代码;
【SceneKit】
SceneKit(SK)是WWDC12推出的OS X平台的Cocos 3D渲染引擎框架。支持粒子效果,允许在渲染每一帧之前处理该帧;
(3)提供了声音播放,并且还集成了物理库等许多东西。首先指出在iOS中开发2D游戏SpriteKit并不是唯一的选择,它是一个支持GPU加速的3D绘图API,可以通过这些API让精灵动起来,可以使用OC或者Swift来进行开发。目前已经支持的内容包括:精灵、很酷的特效(例如视频、滤镜和遮罩),导致很难把游戏移植到Android等其他平台;
(2)SpriteKit现在还处于初始阶段,提供的内容还不够丰富。
SceneKit是基于OpenGL构建的。
【Metal】
在iOS8中,苹果发布了一个新的接口叫做Metal,那么你将被iOS生态圈绑架,负责和3D绘图硬件交互:
(1)它是内置到iOS中的,物理模拟,脚本事件:
(1)提供了游戏引擎必备的图形渲染和动画API;
(2)它内置的工具支持纹理和粒子;
(3)它可以让你做一些其他框架难以做到的事情;
(4)提供的物理引擎;
(5)与Xcode集成,可以更容易的创建基于Sprite Kit的游戏工程,调试也很方便,并且它是由苹果开发的,所以对他的支持和更新我们可以放心,我们先来看看SpriteKit的特点和优缺点:
1.特点,例如Cocos2D,也是一个底层API,或者使用很酷的图形效果和遮罩。
3.缺点【SpriteKit】
在iOS7中内置了新的SpriteKit框架,该框架主要用来开发2D游戏。是开发iOS和OS X 下的2D游戏引擎:
(1)如果使用了SpriteKit,例如把视频当做精灵一样处理;
(2)使用传统的渲染和动画,多程渲染,支持iOS平台。SceneKit整合了Core Image,Core Animation之类的图形框架,现在还整合进了SpriteKit,因此并不需要额外的库或者其他的外部依赖;
(6)可以使用Swift语言;
2.优点
⑸ 用spritekit里怎么用uikit组件
//AS3.0//package{import flash.display.Sprite;import flash.events.Event;//定义类public class MoveBalls extends Sprite {//构造函数public function MoveBalls() {//初始化舞台 init(); }//构建初始化函数private function init() {//创建...
⑹ 有什么知名的iOS游戏是用Sprite Kit开发的
苹果带来的 SpriteKit 不仅仅只是增加了制作2D游戏的 API,还在 Xcode5 中集成了包括 Texture Atlas 和粒子系统等等专为 SpriteKit 服务的插件。本文将介绍如何在 SpriteKit 中使用 Texture Atlas和需要注意的一些问题
⑺ IOS开发 问一个spritekit问题
将 self.view 实例化为 SKVIew 的对象。可以在 xib 中操作。 Custom Class 否则直接强转肯定是不行的
⑻ scenekit和spritekit的区别
【SpriteKit】
在iOS7中内置了新的SpriteKit框架,该框架主要用来开发2D游戏。是开发iOS和OS X 下的2D游戏引擎,可以使用OC或者Swift来进行开发。目前已经支持的内容包括:精灵、很酷的特效(例如视频、滤镜和遮罩),并且还集成了物理库等许多东西。首先指出在iOS中开发2D游戏SpriteKit并不是唯一的选择,我们先来看看SpriteKit的特点和优缺点:
1.特点:
(1)提供了游戏引擎必备的图形渲染和动画API,可以通过这些API让精灵动起来;
(2)使用传统的渲染和动画,允许在渲染每一帧之前处理该帧;
(3)提供了声音播放;
(4)提供的物理引擎;
(5)与Xcode集成,可以更容易的创建基于Sprite Kit的游戏工程,调试也很方便;
(6)可以使用Swift语言;
2.优点:
(1)它是内置到iOS中的,因此并不需要下载额外的库或者其他的外部依赖,并且它是由苹果开发的,所以对他的支持和更新我们可以放心;
(2)它内置的工具支持纹理和粒子;
(3)它可以让你做一些其他框架难以做到的事情,例如把视频当做精灵一样处理,或者使用很酷的图形效果和遮罩。
3.缺点:
(1)如果使用了SpriteKit,那么你将被iOS生态圈绑架,导致很难把游戏移植到Android等其他平台;
(2)SpriteKit现在还处于初始阶段,提供的内容还不够丰富,例如Cocos2D,暂不支持自定义的OpenGL代码;
【SceneKit】
SceneKit(SK)是WWDC12推出的OS X平台的Cocos 3D渲染引擎框架。支持粒子效果,物理模拟,脚本事件,多程渲染,支持iOS平台。SceneKit整合了Core Image,Core Animation之类的图形框架,现在还整合进了SpriteKit。
SceneKit是基于OpenGL构建的。
【Metal】
在iOS8中,苹果发布了一个新的接口叫做Metal,它是一个支持GPU加速的3D绘图API。Metal和OpenGL ES类似,也是一个底层API,负责和3D绘图硬件交互。可惜的是,Metal不是跨平台的。
⑼ 如何在 SpriteKit 中使用 Texture Atlas
苹果带来的 SpriteKit 不仅仅只是增加了制作2D游戏的 API,还在 Xcode5 中集成了包括 Texture Atlas 和粒子系统等等专为 SpriteKit 服务的插件。本文将介绍如何在 SpriteKit 中使用 Texture Atlas和需要注意的一些问题,这个主题将分为两部分来介绍,本文是第一部分。
Texture Atlas
Texture Atlas,又称为 SpriteSheet,是游戏开发里非常常用的一种图片技术。简单的说,就是将多个图片整合到一张大图上,在使用图片时通过从大图上截取需要的部分来绘制正确的图形的技术。作为游戏开发者,如果你还不知道 TextureAtlas 是什么,或者为什么要使用 Texture Atlas,请观看下面的视频。用一句话来说,就是为了加快绘制速度和节约内存使用。
制作 Texture Atlas
在了解 Texture Atlas 之后,我们来看看如何制作生成 Texture Atlas 。首先下载几张图片用于制作 Texture Atlas 。目前生成 Texture Atlas 有两种方式,一种是用 Xcode 生成,另一种是用软件 TexturePacker,下面我会分别介绍两种方式。
Xcode
首先来说说 Xcode ,这里指的是 Xcode5 , Xcode5 之前的版本并不支持 SpriteKit 。使用 Xcode 来生成 Texture Atlas 简单的惊人,你只用把图片准备好,创建一个文件夹,加到工程,就这么简单!当然,创建的文件夹有一点不同,需要以 .atlas 结尾。
我们举个例子来边做边说,首先用 SpriteKit 模板创建一个工程,然后将 ViewController.m 的 viewDidLoad 修改成 viewWillLayoutSubviews,至于为什么请查看SpriteKit中的陷阱一文。删掉自带的 Spaceship.png 图片和 MyScene.m里的相关代码,并将下载的图片解压到工程根目录下,如图所示:
解压出来的图片已经包括了普通尺寸和 Retina 尺寸的图片,所以我们只需要将文件夹的名称改为需要的形式,比如 texture.atlas 。
然后将该文件夹加入到工程里,如图所示:
加到工程之后我们发现,跟一般文件夹不同的是, texture.atlas 的文件夹颜色不是黄色而是蓝色的,这是不是说明这个文件夹有什么不同呢?确实如此,.atlas 文件夹会自动设置成引用的方式,所以在文件夹内添加或删除文件 Xcode 会自动识别,不需要作什么修改。比如我们删除 texture.atlas 里的 5.png 和 [email protected],Xcode的文件目录里会自动修改过来,如下图。
这一点在游戏开发中是非常实用的,因为图片总是在不停的修改和变动,这样你就不用每次去修改或重新生成 TextureAtlas 了。
最后我们来看看 Xcode5 关于 Texture Atlas 的设置,打开项目target的 Build Settings ,搜索框内输入 sprite 就会显示如图的两项,第一项是 Texture Atlas 生成的开关,第二项是 生成 Texture Atlas 的图片格式,默认情况下 Xcode5 已经将Texture Atlas 生成打开(设置成 YES ),修改图片格式可以缩小内存的使用,但同时会降低图片质量。
我们需要手动做的就全部说完了。那 Xcode 是如何生成 Texture Atlas 的呢,生成的文件在哪里呢?
在编译工程时, Xcode 会将所有 .atlas 文件夹里的图片编译并生成 Texture Atlas 大图和一个读取信息的 plist 数据文件然后放在一个新的 .atlasc 的文件夹里放在程序 bundle 里。我们用模拟器来看看生成的 Texture Atlas 长什么样,现在编译工程,然后在 Finder 打开这个路径 /Users/<username>/Library/Application\ Support/iPhone\ Simulator/7.0/Applications 将 <username> 换成你自己的用户名,文件夹里应该就有你刚刚编译的工程,找到并打开,然后找到程序 bundle 并右键选择 Show Package Contents ,如图所示:
开打之后你就会发现 .atlasc 文件夹了,快看看里面的 Texture Atlas 吧。
生成的 Texture Atlas 将所有的图片贴在了一起组成一张大图并生成了 plist 数据文件,数据文件存储的就是所有图片的位置信息用于截取每一张需要的图片。而且 Xcode 自动将图片分为了普通尺寸和 Retina 尺寸,非常智能,你只需要为 Retina 图片加上 @2x 而已。我们还发现生成的 Texture Atlas 文件名加上了 1 ,这是不是意味着会有 2 3 4等等呢?答案是肯定的, 下面列出了 Xcode 生成 Texture Atlas 的几个规则:
每个 Texture Atlas 的最大尺寸是 2000 x 2000 像素
如果在一个 .atlas 文件夹下放了过多的图片使得生成的 Texture Atlas 超过最大尺寸时 Xcode 会自动生成多张图片,于是就会有上面说到的 2 3 4等等后缀名的文件了
不同分辨率的图片会分别生成独立的 Texture Atlas,如 Retina 图片的 [email protected]
更神奇的是,你甚至可以将编译生成的 .atlasc 文件夹直接加到工程来使用,而不使用原图片。这也正是下面要讲的 TexturePacker 所使用的方法。
⑽ 用spritekit开发怎么用tableview
游戏规则是:玩家是五角星小球,小球自动沿着陀螺线向外运动,当玩家点击屏幕时五角星小球会跳跃到内层螺旋,当五角星小球碰到红色旋风或滚动到螺旋线终点时游戏结束。玩家吃掉绿色旋风来得2分,吃到紫色三角得一分并获得保护罩,保护罩用来抵挡一次红色旋风。随着分数的增加游戏会升级,速度加快。游戏结束后可以截屏分享到社交网络,也可以选择重玩。
以下是本文内容:
1. 准备工作
2. 绘制基本界面
3. Swift中用访问者模式处理碰撞
4. 界面数据显示
5. 按钮的绘制和截图分享
准备工作
SpriteKit是苹果iOS7新推出的2D游戏引擎,这里不再过多介绍。我们新建工程的时候选取iOS中的Game,然后选择SpriteKit作为游戏引擎,语言选择Swift,Xcode6会为我们自动创建一个游戏场景GameScene,它包含GameScene.swift和GameScene.sks两个文件,sks文件可以让我们可视化拖拽游戏控件到场景上,然后再代码中加载sks文件来完成场景的初始化: