SpriteKit框架之浅谈SKNode及SKSpriteNode


做什么都要不忘初心,对吗?热爱编程,那就把它做好.
SpriteKit框架之浅谈SKNode及SKSpriteNode_第1张图片


简介


在一个游戏的场景当中几乎所有的内容都是由图像实现的,在开发过程中每一个图像都被称为精灵,不管是背景还是各种物体都属于精灵.在场景中所看到的所有内容都是有结点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];
    
    
}

效果图如下.

SpriteKit框架之浅谈SKNode及SKSpriteNode_第2张图片
效果图


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在游戏中占着比较高的比重,它的属性也要多加练习掌握,谢谢阅读,如果有什么疑问可以在下面的评论区提出,我会及时回复您的.

你可能感兴趣的:(SpriteKit框架之浅谈SKNode及SKSpriteNode)