做什么都要不忘初心,對(duì)嗎?熱愛編程,那就把它做好.

簡(jiǎn)介
在一個(gè)游戲的場(chǎng)景當(dāng)中幾乎所有的內(nèi)容都是由圖像實(shí)現(xiàn)的,在開發(fā)過程中每一個(gè)圖像都被稱為精靈,不管是背景還是各種物體都屬于精靈.在場(chǎng)景中所看到的所有內(nèi)容都是有結(jié)點(diǎn)SKNode類以及它的子結(jié)點(diǎn)類構(gòu)成的.這邊博客主要講的是SKNode相關(guān)的技術(shù)點(diǎn)以及SKNode最常用的子類SKSpriteNode的使用.
SKNode的子類列表
SKNode大致包含幾個(gè)大類,如下圖表所示.
| 類名稱 | 功能簡(jiǎn)介 |
|---|---|
| SKSpriteNode | 用于繪制精靈紋理 |
| SKVideoNode | 用于播放視頻 |
| SKLabelNode | 用于渲染文本 |
| SKShapeNode | 用于渲染基于Core Graphics 路徑的形狀 |
| SKEmitterNode | 用于創(chuàng)建和渲染粒子系統(tǒng) |
| SKCropNode | 用于使用遮罩來裁剪子結(jié)點(diǎn) |
| SKEffectNode | 用于在子結(jié)點(diǎn)上使用Core Image濾鏡 |
SKSpriteNode介紹
SKSpriteNode是我們最常用的SKNode的子類,也就是我們常說的精靈.一個(gè)SKSpriteNode實(shí)例是一個(gè)節(jié)點(diǎn),可以繪制帶圖片,有色方塊,經(jīng)過顏色混合的圖片。
SKSpriteNode的創(chuàng)建
SKSpriteNode常用的創(chuàng)建方法有兩種類方法,一種是使用圖片名稱直接創(chuàng)建一個(gè)SKSpriteNode對(duì)象,一個(gè)是使用紋理創(chuàng)建一個(gè)SKSpriteNode對(duì)象,方法如下.
+ spriteNodeWithImageNamed: //通過圖片文件創(chuàng)建并返回一個(gè)紋理精靈。
+ spriteNodeWithTexture: // 通過紋理實(shí)例創(chuàng)建并返回一個(gè)紋理精靈。
不管是使用圖片名稱直接創(chuàng)建還是使用紋理實(shí)例創(chuàng)建,我們都需要圖片,我們就往工程中拖兩張圖片,一張作為背景,一張作為其中的一個(gè)精靈.在我們創(chuàng)建好的SKScene中 -(void)didMoveToView:(SKView *)view 方法中 創(chuàng)建我們的兩個(gè)精靈并且添加到圖像上.代碼如下.
-(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屬性介紹
上一個(gè)模塊說到SKSpriteNode的創(chuàng)建,那么參照上面,下面說一下SKSpriteNode的幾個(gè)常用屬性.屬性東西就需要小伙伴們一一使用了,嘗試了.這里我就不多說了.
| 屬性名稱 | 類型 | 功能簡(jiǎn)介 |
|---|---|---|
| position | CGPoint | SKSpriteNode對(duì)象的x,y軸的位置信息 |
| zPosition | CGFloat | SKSpriteNode對(duì)象的z軸位置,與ignoresSiblingOrder有關(guān).如果ignoresSiblingOrder的值為YES,就是按照z軸的信息繪制,如果為NO,就是按照代碼順序繪制精靈.可以想象入圖層類似. |
| anchorPoint | CGPoint | SKSpriteNode對(duì)象的錨點(diǎn)信息,錨點(diǎn)一般是與position配合使用的.錨點(diǎn)的相關(guān)知識(shí),我的博客中有,如果有疑問,可以往前翻找 |
| zRotation | CGFloat | SKSpriteNode對(duì)象的角度信息,通過設(shè)置他可以設(shè)置SKSpriteNode對(duì)象的的旋轉(zhuǎn)角度 |
| size | CGSize | SKSpriteNode對(duì)象的寬度和高度信息的設(shè)置 |
| scale | CGFloat | SKSpriteNode對(duì)象的大小縮放比例 |
| xScale | CGFloat | SKSpriteNode對(duì)象的寬度大小縮放比例 |
| yScale | CGFloat | SKSpriteNode對(duì)象的高度大小縮放比例 |
| name | NSString | SKSpriteNode對(duì)象的名字,也就是SKSpriteNode對(duì)象的唯一標(biāo)識(shí)符 |
| physicsBody | SKPhysicsBody | SKSpriteNode對(duì)象在物理引擎中的物理模型 |
| speed | CGFloat | KSpriteNode對(duì)象的速度 |
| alpha | CGFloat | KSpriteNode對(duì)象的透明度 |
| hidden | BOOL | KSpriteNode對(duì)象是否隱藏 |
何去何從
下一篇博客我可能會(huì)對(duì)SpriteKit框架中的動(dòng)作進(jìn)行詳細(xì)的說明,其實(shí)游戲的組成一般都是有這么幾大塊組成的:場(chǎng)景,精靈,動(dòng)作,物理引擎,游戲邏輯.所以SKSpriteNode在游戲中占著比較高的比重,它的屬性也要多加練習(xí)掌握,謝謝閱讀,如果有什么疑問可以在下面的評(píng)論區(qū)提出,我會(huì)及時(shí)回復(fù)您的.??