SpriteKit框架之浅谈SKNode及SKSpriteNode

来源:转载



做什么都要不忘初心,对吗?热爱编程,那就把它做好.




简介
在一个游戏的场景当中几乎所有的内容都是由图像实现的,在开发过程中每一个图像都被称为精灵,不管是背景还是各种物体都属于精灵.在场景中所看到的所有内容都是有结点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在游戏中占着比较高的比重,它的属性也要多加练习掌握,谢谢阅读,如果有什么疑问可以在下面的评论区提出,我会及时回复您的.

分享给朋友:
您可能感兴趣的文章:
随机阅读: