做什么都要不忘初心,对吗?热爱编程,那就把它做好.
简介
在一个游戏的场景当中几乎所有的内容都是由图像实现的,在开发过程中每一个图像都被称为精灵,不管是背景还是各种物体都属于精灵.在场景中所看到的所有内容都是有结点SKNode类以及它的子结点类构成的.这边博客主要讲的是SKNode相关的技术点以及SKNode最常用的子类SKSpriteNode的使用.
SKNode的子类列表
SKNode大致包含几个大类,如下图表所示.
类名称 | 功能简介 |
---|---|
SKSpriteNode | 用于绘制精灵纹理 |
SKVideoNode | 用于播放视频 |
SKLabelNode | 用于渲染文本 |
SKShapeNode | 用于渲染基于Core Graphics 路径的形状 |
SKEmitterNode | 用于创建和渲染粒子系统 |
SKCropNode | 用于使用遮罩来裁剪子结点 |
SKEffectNode | 用于在子结点上使用Core Image滤镜 |
SKSpriteNode介绍
SKSpriteNode是我们最常用的SKNode的子类,也就是我们常说的精灵.一个SKSpriteNode实例是一个节点,可以绘制带图片,有色方块,经过颜色混合的图片。
SKSpriteNode的创建
SKSpriteNode常用的创建方法有两种类方法,一种是使用图片名称直接创建一个SKSpriteNode对象,一个是使用纹理创建一个SKSpriteNode对象,方法如下.
+ spriteNodeWithImageNamed: //通过图片文件创建并返回一个纹理精灵。
+ spriteNodeWithTexture: // 通过纹理实例创建并返回一个纹理精灵。
不管是使用图片名称直接创建还是使用纹理实例创建,我们都需要图片,我们就往工程中拖两张图片,一张作为背景,一张作为其中的一个精灵.在我们创建好的SKScene中 -(void)didMoveToView:(SKView *)view 方法中 创建我们的两个精灵并且添加到图像上.代码如下.
-(void)didMoveToView:(SKView *)view{
[super didMoveToView:view];
SKSpriteNode *node = [SKSpriteNode spriteNodeWithImageNamed:@"image52.jpg"];
node.position = CGPointZero;
node.anchorPoint = CGPointZero;
node.size = self.size;
[self addChild:node];
SKSpriteNode *people = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"image2232.png"]];
people.anchorPoint = CGPointMake(0.5, 0.5);
people.position = CGPointMake(100, 100);
people.name = @"people";
[self addChild:people];
}
效果图如下.
SKSpriteNode属性介绍
上一个模块说到SKSpriteNode的创建,那么参照上面,下面说一下SKSpriteNode的几个常用属性.属性东西就需要小伙伴们一一使用了,尝试了.这里我就不多说了.
属性名称 | 类型 | 功能简介 |
---|---|---|
position | CGPoint | SKSpriteNode对象的x,y轴的位置信息 |
zPosition | CGFloat | SKSpriteNode对象的z轴位置,与ignoresSiblingOrder有关.如果ignoresSiblingOrder的值为YES,就是按照z轴的信息绘制,如果为NO,就是按照代码顺序绘制精灵.可以想象入图层类似. |
anchorPoint | CGPoint | SKSpriteNode对象的锚点信息,锚点一般是与position配合使用的.锚点的相关知识,我的博客中有,如果有疑问,可以往前翻找 |
zRotation | CGFloat | SKSpriteNode对象的角度信息,通过设置他可以设置SKSpriteNode对象的的旋转角度 |
size | CGSize | SKSpriteNode对象的宽度和高度信息的设置 |
scale | CGFloat | SKSpriteNode对象的大小缩放比例 |
xScale | CGFloat | SKSpriteNode对象的宽度大小缩放比例 |
yScale | CGFloat | SKSpriteNode对象的高度大小缩放比例 |
name | NSString | SKSpriteNode对象的名字,也就是SKSpriteNode对象的唯一标识符 |
physicsBody | SKPhysicsBody | SKSpriteNode对象在物理引擎中的物理模型 |
speed | CGFloat | KSpriteNode对象的速度 |
alpha | CGFloat | KSpriteNode对象的透明度 |
hidden | BOOL | KSpriteNode对象是否隐藏 |
何去何从
下一篇博客我可能会对SpriteKit框架中的动作进行详细的说明,其实游戏的组成一般都是有这么几大块组成的:场景,精灵,动作,物理引擎,游戏逻辑.所以SKSpriteNode在游戏中占着比较高的比重,它的属性也要多加练习掌握,谢谢阅读,如果有什么疑问可以在下面的评论区提出,我会及时回复您的.😁