SpriteKit框架之淺談SKNode及SKSpriteNode


做什么都要不忘初心,對(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ù)您的.??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,905評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,165評(píng)論 4 61
  • 引子 許久,我們終于來到了黑水潭。剛剛站穩(wěn)腳跟,胖子就罵道 ‘‘ 靠,吳邪你快來看看這是什么’’我來到胖子身邊。胖...
    i_am_sunkey閱讀 294評(píng)論 4 7
  • 免俗的不再說Hello, 只是漫步踱去,靜靜站立, 掏出一支煙或者只是靜靜站著, 看著遠(yuǎn)方或者什么其他地方 緩緩飄...
    LienZzzz閱讀 229評(píng)論 0 1

友情鏈接更多精彩內(nèi)容