SpriteKit框架詳細(xì)解析(一) —— 基本概覽(一)

版本記錄

版本號(hào) 時(shí)間
V1.0 2017.12.01

前言

SpriteKit框架使用優(yōu)化的動(dòng)畫系統(tǒng)子眶,物理模擬和事件處理支持創(chuàng)建基于2D精靈的游戲。接下來(lái)這幾篇我們就詳細(xì)的解析一下這個(gè)框架。

Overview

下面看一下該框架的基本信息。

SpriteKit提供了一個(gè)圖形渲染和動(dòng)畫的基礎(chǔ)結(jié)構(gòu)戚哎,你可以使用它讓任意類型的紋理圖片或者精靈動(dòng)起來(lái)裸诽。SpriteKit使用傳統(tǒng)的渲染循環(huán),在每一幀被渲染之前幀的內(nèi)容就已經(jīng)處理好了建瘫。你的游戲決定了場(chǎng)景的內(nèi)容以及場(chǎng)景中的每一幀是如何變化的崭捍。SpriteKit利用圖形硬件高效的渲染動(dòng)畫的每一幀尸折。SpriteKit是經(jīng)過(guò)高度優(yōu)化的啰脚,所以精靈的位置可以在每幀動(dòng)畫中任意的改變。

接下來(lái)我們看一下原理圖实夹,這個(gè)原理圖很好的說(shuō)明了SpriteKit框架渲染每一幀的基本流程橄浓。

SpriteKit是一個(gè)圖形渲染和動(dòng)畫基礎(chǔ)架構(gòu),您可以使用它來(lái)動(dòng)畫任意紋理圖像亮航,否則稱為sprites荸实。 SpriteKit提供了一個(gè)傳統(tǒng)的渲染循環(huán),在確定渲染幀和渲染幀之間交替進(jìn)行缴淋。 您確定幀的內(nèi)容以及這些內(nèi)容如何更改准给。 SpriteKit完成了使用圖形硬件高效渲染該幀的工作。 SpriteKit針對(duì)任意動(dòng)畫或內(nèi)容更改進(jìn)行了優(yōu)化重抖。 這種設(shè)計(jì)使SpriteKit更適合需要靈活處理動(dòng)畫的游戲和應(yīng)用程序露氮。


Sprite Content is Drawn by Presenting Scenes Inside a Sprite View - Sprite內(nèi)容通過(guò)在Sprite視圖中呈現(xiàn)場(chǎng)景來(lái)繪制

動(dòng)畫和渲染由SKView對(duì)象執(zhí)行。 你把這個(gè)視圖放到一個(gè)窗口window中钟沛,然后把內(nèi)容呈現(xiàn)給它畔规。 因?yàn)樗且粋€(gè)視圖View,其內(nèi)容可以與視圖層次結(jié)構(gòu)中的其他視圖組合恨统。

游戲中的內(nèi)容被組織成場(chǎng)景scene叁扫,由SKScene對(duì)象表示。 一個(gè)場(chǎng)景持有精靈sprites和其他內(nèi)容被渲染畜埋。 場(chǎng)景還實(shí)現(xiàn)了每幀邏輯和內(nèi)容處理莫绣。 在任何時(shí)候,視圖呈現(xiàn)一個(gè)場(chǎng)景scene悠鞍。 只要場(chǎng)景呈現(xiàn)兔综,其動(dòng)畫和每幀邏輯就會(huì)自動(dòng)執(zhí)行。

要使用SpriteKit創(chuàng)建游戲或應(yīng)用程序狞玛,您要么SKScene類的子類软驰,要么創(chuàng)建一個(gè)場(chǎng)景scene代理來(lái)執(zhí)行主要的游戲相關(guān)任務(wù)。 例如心肪,您可以創(chuàng)建單獨(dú)的場(chǎng)景類來(lái)顯示主菜單锭亏,游戲畫面和游戲結(jié)束后顯示的內(nèi)容。 您可以在窗口中window輕松使用單個(gè)SKView對(duì)象硬鞍,并在不同的場(chǎng)景之間切換慧瘤。 切換場(chǎng)景時(shí)戴已,可以使用SKTransition類在兩個(gè)場(chǎng)景之間進(jìn)行動(dòng)畫處理。


A Node Tree Defines What Appears in a Scene - 節(jié)點(diǎn)樹(shù)定義場(chǎng)景中出現(xiàn)的內(nèi)容

SKScene類是SKNode類的后代锅减。 使用SpriteKit時(shí)糖儡,節(jié)點(diǎn)nodes是所有內(nèi)容的基本構(gòu)建塊,場(chǎng)景scene對(duì)象充當(dāng)節(jié)點(diǎn)對(duì)象樹(shù)的根節(jié)點(diǎn)怔匣。 場(chǎng)景及其后代決定了哪些內(nèi)容被繪制以及如何渲染握联。

每個(gè)節(jié)點(diǎn)的位置在其父節(jié)點(diǎn)定義的坐標(biāo)系中指定。 節(jié)點(diǎn)還將其他屬性應(yīng)用于其內(nèi)容及其后代的內(nèi)容每瞒。 例如金闽,當(dāng)一個(gè)節(jié)點(diǎn)被旋轉(zhuǎn)時(shí),它的所有后代也被旋轉(zhuǎn)剿骨。 您可以使用節(jié)點(diǎn)樹(shù)構(gòu)建復(fù)雜的圖像代芜,然后通過(guò)調(diào)整最頂層節(jié)點(diǎn)的屬性來(lái)旋轉(zhuǎn),縮放和混合整個(gè)圖像浓利。

SKNode類不會(huì)繪制任何東西挤庇,但它將其屬性應(yīng)用到它的后代。 SpriteKit中的每種可繪制內(nèi)容都由一個(gè)不同的子類來(lái)表示贷掖。 其他一些節(jié)點(diǎn)子類不繪制自己的內(nèi)容嫡秕,但修改其后代的行為。 例如羽资,可以使用SKEffectNode對(duì)象將Core Image filter應(yīng)用于場(chǎng)景scene中的整個(gè)子樹(shù)淘菩。 通過(guò)精確地控制節(jié)點(diǎn)樹(shù)的結(jié)構(gòu),可以確定節(jié)點(diǎn)的渲染順序屠升。

所有節(jié)點(diǎn)對(duì)象都是響應(yīng)者responder對(duì)象潮改,都是UIResponderNSResponder的子類,因此您可以繼承任何節(jié)點(diǎn)類并創(chuàng)建接受用戶輸入的新類腹暖。 視圖view類自動(dòng)擴(kuò)展響應(yīng)者鏈以包含場(chǎng)景的節(jié)點(diǎn)樹(shù)汇在。


Textures Hold Reusable Graphical Data - 紋理保存可重復(fù)使用的圖形數(shù)據(jù)

SKTexture對(duì)象表示的紋理是用于渲染精靈的共享圖像。每當(dāng)您需要將相同的圖像應(yīng)用于多個(gè)精靈sprites時(shí)脏答,始終使用紋理糕殉。通常你通過(guò)加載存儲(chǔ)在應(yīng)用程序包中的圖像文件來(lái)創(chuàng)建紋理。但是殖告,SpriteKit也可以在運(yùn)行時(shí)從其他來(lái)源為您創(chuàng)建紋理阿蝶,包括Core Graphics圖像,甚至通過(guò)將節(jié)點(diǎn)樹(shù)渲染到紋理中黄绩。

SpriteKit通過(guò)處理加載紋理所需的底層代碼并使其可用于圖形硬件來(lái)簡(jiǎn)化紋理管理羡洁。紋理管理由SpriteKit自動(dòng)管理。但是爽丹,如果您的游戲使用大量圖像筑煮,則可以通過(guò)控制部分過(guò)程來(lái)提高其性能辛蚊。首先,您通過(guò)明確告訴SpriteKit來(lái)加載紋理真仲。

紋理地圖集atlas是在您的游戲中一起使用的一組相關(guān)紋理袋马。例如,您可以使用紋理圖集來(lái)存儲(chǔ)動(dòng)畫顯示游戲級(jí)別背景所需的所有動(dòng)畫所需的所有紋理秸应。 SpriteKit使用紋理圖集來(lái)提高渲染性能虑凛。


Nodes Execute Actions to Animate Content - 節(jié)點(diǎn)執(zhí)行動(dòng)作來(lái)動(dòng)畫內(nèi)容

場(chǎng)景scene的內(nèi)容使用動(dòng)作actions進(jìn)行動(dòng)畫。每個(gè)動(dòng)作都是由SKAction類定義的一個(gè)對(duì)象灸眼。您告訴節(jié)點(diǎn)執(zhí)行操作卧檐。然后墓懂,當(dāng)場(chǎng)景處理動(dòng)畫幀時(shí)焰宣,執(zhí)行動(dòng)作。一些動(dòng)作在一幀動(dòng)畫中完成捕仔,而其他動(dòng)作則在完成之前應(yīng)用多幀動(dòng)畫匕积。動(dòng)作最常見(jiàn)的用途是動(dòng)畫改變節(jié)點(diǎn)的屬性。例如榜跌,可以創(chuàng)建移動(dòng)節(jié)點(diǎn)闪唆,縮放或旋轉(zhuǎn)節(jié)點(diǎn)或使其透明的操作。但是钓葫,操作也可以更改節(jié)點(diǎn)樹(shù)悄蕾,播放聲音,甚至執(zhí)行自定義代碼础浮。

Actions是非常有用的帆调,但你也可以結(jié)合行動(dòng)來(lái)創(chuàng)造更復(fù)雜的效果。您可以創(chuàng)建同時(shí)運(yùn)行的操作組豆同,也可以創(chuàng)建按順序運(yùn)行的操作序列番刊。您可以使操作自動(dòng)重復(fù)。

場(chǎng)景也可以執(zhí)行自定義的每幀處理影锈。你重寫場(chǎng)景子類的方法來(lái)執(zhí)行額外的游戲任務(wù)芹务。例如,如果每個(gè)幀都需要移動(dòng)一個(gè)節(jié)點(diǎn)鸭廷,那么您可以直接在每一幀中調(diào)整其屬性枣抱,而不是使用一個(gè)動(dòng)作來(lái)完成。


Add Physics Bodies and Joints to Simulate Physics in Your Scene - 添加物理實(shí)體和關(guān)節(jié)點(diǎn)來(lái)模擬場(chǎng)景中的物體

雖然您可以控制場(chǎng)景中每個(gè)節(jié)點(diǎn)的確切位置辆床,但通常您需要這些節(jié)點(diǎn)互相交互佳晶,相互碰撞并在流程中傳遞速度變化。你也可能想做一些行動(dòng)系統(tǒng)不能處理的事情佛吓,例如模擬重力和其他力量宵晚。為此垂攘,您可以創(chuàng)建物理實(shí)體(SKPhysicsBody)并將其附加到場(chǎng)景中的節(jié)點(diǎn)上。每個(gè)物理體都由形狀淤刃,大小晒他,質(zhì)量和其他物理特征來(lái)定義。場(chǎng)景定義了附加SKPhysicsWorld對(duì)象中物理模擬的全局特征逸贾。您可以使用物理世界來(lái)定義整個(gè)模擬的重力陨仅,并定義模擬的速度。

當(dāng)場(chǎng)景中包含物理實(shí)體時(shí)铝侵,場(chǎng)景模擬這些實(shí)體物體灼伤。某些力量,如摩擦和重力咪鲜,會(huì)自動(dòng)應(yīng)用狐赡。通過(guò)添加SKFieldNode對(duì)象到場(chǎng)景中,可以自動(dòng)將其他力應(yīng)用于多個(gè)物理體疟丙。你也可以通過(guò)直接修改速度或直接施加力或沖擊來(lái)直接影響特定的場(chǎng)體颖侄。計(jì)算每個(gè)物體的加速度和速度,并且物體相互碰撞享郊。然后览祖,在模擬完成之后,相應(yīng)節(jié)點(diǎn)的位置和旋轉(zhuǎn)被更新炊琉。

您可以精確控制哪些物理效果相互影響展蒂。例如,您可以指定特定物理場(chǎng)節(jié)點(diǎn)僅影響場(chǎng)景中物理實(shí)體的子集苔咪。您還可以決定哪些物理實(shí)體可以相互碰撞锰悼,并分別決定哪些交互引起您的應(yīng)用程序被調(diào)用。您使用這些回調(diào)添加游戲邏輯悼泌。例如松捉,當(dāng)其物理體被另一個(gè)物理體碰撞時(shí),你的游戲可能會(huì)破壞一個(gè)節(jié)點(diǎn)馆里。

您還可以使用物理世界來(lái)查找場(chǎng)景中的物理實(shí)體隘世,并使用聯(lián)合(SKPhysicsJoint)將物理實(shí)體連接在一起。連接體是根據(jù)關(guān)節(jié)的類型一起模擬的鸠踪。


Getting Started with SpriteKit - SpriteKit入門

SpriteKit將內(nèi)容實(shí)現(xiàn)為節(jié)點(diǎn)的分層樹(shù)結(jié)構(gòu)丙者。 節(jié)點(diǎn)樹(shù)由作為根節(jié)點(diǎn)的場(chǎng)景節(jié)點(diǎn)和提供內(nèi)容的其他節(jié)點(diǎn)組成。 場(chǎng)景的每個(gè)幀都被處理并呈現(xiàn)為一個(gè)視圖营密。 場(chǎng)景執(zhí)行動(dòng)作并模擬物體械媒,這兩者都會(huì)改變樹(shù)的內(nèi)容。 然后使用SpriteKit高效地渲染場(chǎng)景。

要開(kāi)始學(xué)習(xí)SpriteKit纷捞,您應(yīng)該按照以下順序查看這些類痢虹,然后再轉(zhuǎn)到框架中的其他類:

  • SKView

  • SKScene

  • SKNode

  • SKSpriteNode

  • SKAction

  • SKPhysicsBody

1. Creating Your First Scene - 創(chuàng)建你的第一個(gè)Scene

SpriteKit內(nèi)容被放置在一個(gè)窗口中,就像其他的視覺(jué)內(nèi)容一樣主儡。 SpriteKit內(nèi)容由SKView類呈現(xiàn)奖唯。 SKView對(duì)象呈現(xiàn)的內(nèi)容稱為場(chǎng)景,即SKScene對(duì)象糜值。場(chǎng)景參與響應(yīng)者鏈responder chain丰捷,并具有其他功能,使其適合游戲寂汇。

由于SpriteKit內(nèi)容由視圖對(duì)象view呈現(xiàn)病往,因此可以將此視圖與視圖層次結(jié)構(gòu)中的其他視圖組合在一起。例如骄瓣,您可以使用標(biāo)準(zhǔn)按鈕控件停巷,并將它們放在SpriteKit視圖的上方±巯停或者叠穆,你可以添加交互性到sprites來(lái)實(shí)現(xiàn)你自己的按鈕;這個(gè)選擇由你少漆。在這個(gè)例子的后面臼膏,你會(huì)看到如何在場(chǎng)景中實(shí)現(xiàn)交互。

一個(gè)SKView可以作為一個(gè)孩子添加到一個(gè)UIView中示损,或者你可以顯式地將你的視圖控制器的視圖轉(zhuǎn)換到一個(gè)SceneKit視圖渗磅,或者通過(guò)storyboards,使用自定義類Custom Class或者代碼检访。以下清單顯示了如何重寫視圖控制器的viewDidLoad方法始鱼,以將其視圖轉(zhuǎn)換為SKView:

// Listing 1 Casting a view controller’s view to an SKView

override func viewDidLoad() {
    super.viewDidLoad()
    view = SKView()
}
var skView: SKView {
    return view as! SKView
}

創(chuàng)建SpriteKit視圖后,顯示內(nèi)容的下一步是創(chuàng)建一個(gè)場(chǎng)景scene脆贵。 通常医清,您可以為每個(gè)需要的場(chǎng)景子類SKScene,但簡(jiǎn)單起見(jiàn)卖氨,下面的代碼只是實(shí)例化一個(gè)由視圖呈現(xiàn)的新場(chǎng)景對(duì)象:

// Listing 2 Creating and presenting a scene

let scene = SKScene(size: CGSize(width: 1024, height: 768))
override func viewWillAppear(_ animated: Bool) {
    skView.presentScene(scene)
}

要在SpriteKit中顯示內(nèi)容会烙,相關(guān)節(jié)點(diǎn)將添加到場(chǎng)景或場(chǎng)景的子項(xiàng)中。 本例中顯示label的最后一步是創(chuàng)建一個(gè)SKLabelNode并將其添加到場(chǎng)景中:

Listing 3 Add a label to the scene

let label = SKLabelNode(text: "SpriteKit")
label.position = CGPoint(x: scene.size.width / 2,
                         y: scene.size.height / 2)
scene.addChild(label)

框架結(jié)構(gòu)

下面我們就看一下框架結(jié)構(gòu)筒捺。

下面我們就詳細(xì)的看一下這個(gè)結(jié)構(gòu)柏腻。

1. Displaying SpriteKit Content in Your App

創(chuàng)建用于表示和顯示內(nèi)容的基本對(duì)象SpriteKit

  • SKView

    • 顯示SpriteKit內(nèi)容的對(duì)象系吭。 這個(gè)內(nèi)容由SKScene對(duì)象提供五嫂。
  • SKScene

    • 顯示在視圖中的所有Sprite Kit對(duì)象的根節(jié)點(diǎn)。
  • SKNode

    • SKNode類是大多數(shù)SpriteKit內(nèi)容的基本構(gòu)建塊。
  • SKViewDelegate

    • 允許動(dòng)態(tài)控制SKView對(duì)象的渲染速率的方法沃缘。
  • SKSceneDelegate

    • 您的應(yīng)用程序可以實(shí)現(xiàn)的方法以便加入SpriteKit的動(dòng)畫循環(huán)躯枢。

2. Nodes That Draw Content - 繪制內(nèi)容的節(jié)點(diǎn)

生成可以顯示形狀,紋理槐臀,圖像和視頻的可視化節(jié)點(diǎn)闺金。

  • SKSpriteNode

    • 繪制矩形紋理,圖像或顏色的節(jié)點(diǎn)峰档。
  • SKShapeNode

    • 呈現(xiàn)由Core Graphics路徑定義的形狀的節(jié)點(diǎn)败匹。
  • SKLabelNode

    • 顯示文本標(biāo)簽的節(jié)點(diǎn)。
  • SKVideoNode

    • 顯示視頻內(nèi)容的節(jié)點(diǎn)讥巡。
  • SKCropNode

    • 一個(gè)節(jié)點(diǎn)掀亩,用于屏蔽由子節(jié)點(diǎn)繪制的像素,以便只有一些節(jié)點(diǎn)呈現(xiàn)給父節(jié)點(diǎn)的幀緩沖區(qū)欢顷。
  • SKReferenceNode

    • 從其他節(jié)點(diǎn)的歸檔集合創(chuàng)建其子項(xiàng)的節(jié)點(diǎn)槽棍。

3. Working with Textures - 使用紋理

使用這些類可以從SpriteKit游戲或應(yīng)用程序中使用的圖像資源生成紋理。

  • SKTexture

    • 用于SpriteKit的圖像表示抬驴。
  • SKTextureAtlas

    • 一組紋理炼七。
  • SKMutableTexture

    • 可以動(dòng)態(tài)更新內(nèi)容的紋理。

4. Building Content with Tiles - 用Tiles構(gòu)建內(nèi)容

使用這些類創(chuàng)建大型布持,細(xì)致的場(chǎng)景豌拙。 與使用單個(gè)大圖像作為背景或手動(dòng)添加單個(gè)圖像相比,Tile地圖提供了更好的可管理性和更低的內(nèi)存開(kāi)銷题暖。 SpriteKit的tiles可以排列成長(zhǎng)方形按傅,六邊形或等長(zhǎng)的網(wǎng)格。

  • SKTileMapNode

    • 用于渲染紋理精靈的二維數(shù)組的節(jié)點(diǎn)胧卤。
  • SKTileDefinition

    • 描述tile地圖中使用的單一類型的類唯绍。
  • SKTileGroupRule

    • 定義如何將tile放置在地圖中的類。
  • SKTileGroup

    • 一個(gè)封裝了一系列相關(guān)圖塊定義的類枝誊,這些圖塊定義被設(shè)計(jì)成在一個(gè)圖塊圖中拼湊在一起况芒。
  • SKTileSet

    • 一個(gè)包含tile圖中可用的所有tile定義的類。

5. Animating Content - 動(dòng)畫內(nèi)容

SpriteKit包含豐富的對(duì)象選擇叶撒,動(dòng)畫節(jié)點(diǎn)和場(chǎng)景之間的過(guò)渡绝骚。 節(jié)點(diǎn)動(dòng)畫可以改變節(jié)點(diǎn)的視覺(jué)外觀,例如位置或方向痊乾,或者施加音頻效果皮壁,例如改變立體聲位置或應(yīng)用混響。 這些對(duì)象也可以運(yùn)行反向運(yùn)動(dòng)求解器并應(yīng)用物理力哪审。

  • SKAction

    • 由SKNode執(zhí)行的對(duì)象蛾魄,用于更改其結(jié)構(gòu)或內(nèi)容。
  • SKTransition

    • SKTransition對(duì)象用于執(zhí)行已經(jīng)由SKView對(duì)象呈現(xiàn)的SKScene對(duì)象與新的傳入場(chǎng)景之間的動(dòng)畫過(guò)渡。

6. Constraining Nodes - 約束節(jié)點(diǎn)

限制節(jié)點(diǎn)的位置或方向滴须。

  • SKConstraint

    • 限制節(jié)點(diǎn)位置或旋轉(zhuǎn)的規(guī)范舌狗。
  • SKRange

    • 定義一系列CGFloat值。
  • SKReachConstraints

    • 求解逆運(yùn)動(dòng)學(xué)時(shí)的自由度的規(guī)范扔水。

7. Warping Nodes - 翹曲的節(jié)點(diǎn)

扭曲節(jié)點(diǎn)可實(shí)現(xiàn)諸如伸縮和扭曲幾何等效果痛侍。

  • SKWarpGeometry

    • 遵循SKWarpable的節(jié)點(diǎn)變形的定義。
  • SKWarpGeometryGrid

    • 基于網(wǎng)格的遵循SKWarpable的節(jié)點(diǎn)變形的定義魔市。
  • SKWarpable

    • SKWarpGeometry可以變形和動(dòng)畫的對(duì)象的協(xié)議主届。

8. Cameras and Lighting - 相機(jī)和照明

控制場(chǎng)景的哪些部分需要渲染,并為場(chǎng)景添加光照和陰影待德。

  • SKCameraNode

    • 控制相機(jī)移動(dòng)君丁,縮放和旋轉(zhuǎn)的節(jié)點(diǎn)。
  • SKLightNode

    • 將照明添加到場(chǎng)景中的節(jié)點(diǎn)将宪。

9. Playing Audio - 播放音頻

添加具有遮擋和混響效果的位置音頻绘闷。

  • SKAudioNode
    • 將位置音頻添加到場(chǎng)景的節(jié)點(diǎn)。

10. Simulating Physics - 模擬物理

在場(chǎng)景中模擬物理较坛。使用這些對(duì)象來(lái)響應(yīng)碰撞和接觸事件印蔗,用接頭(如銷和彈簧)建立節(jié)點(diǎn)系統(tǒng),并施加力丑勤,如重力和磁力华嘹。

SpriteKit中的物理模擬是通過(guò)將物理體添加到場(chǎng)景中的節(jié)點(diǎn)來(lái)執(zhí)行的。一個(gè)物理實(shí)體使用其節(jié)點(diǎn)的位置和方向?qū)⒆约褐糜谀M中确封。它使用節(jié)點(diǎn)的位置和方向?qū)⒆约褐糜谀M中除呵。每個(gè)物理實(shí)體都有其他特征來(lái)定義模擬如何操作。這些包括物理對(duì)象的固有屬性爪喘,如質(zhì)量和密度,以及強(qiáng)加在其上的屬性纠拔,如速度秉剑。這些特征定義了一個(gè)物體是如何移動(dòng)的,它是如何受到模擬中的力的影響的稠诲,以及它如何響應(yīng)與其他物理實(shí)體的碰撞侦鹏。

每次場(chǎng)景計(jì)算一個(gè)新的動(dòng)畫幀時(shí),它都會(huì)模擬連接到節(jié)點(diǎn)樹(shù)的物理體上的力和碰撞的影響臀叙。它計(jì)算每個(gè)物理體的最終位置略水,方向和速度。然后劝萤,場(chǎng)景更新每個(gè)相應(yīng)節(jié)點(diǎn)的位置和旋轉(zhuǎn)渊涝。

要在游戲中使用物理,您需要:

  • 將物理體附加到節(jié)點(diǎn)樹(shù)中的節(jié)點(diǎn)并配置其物理屬性。 見(jiàn)SKPhysicsBody跨释。
  • 定義場(chǎng)景物理模擬的全局特征胸私,如重力。 見(jiàn)SKPhysicsWorld鳖谈。
  • 在需要支持你的游戲的場(chǎng)合岁疼,設(shè)置場(chǎng)景中物理實(shí)體的速度,或者對(duì)它們施加力量或沖動(dòng)缆娃。 見(jiàn)SKFieldNodeSKPhysicsBody捷绒。
  • 決定場(chǎng)景中的物理實(shí)體是否應(yīng)該相互連接。 請(qǐng)參閱SKPhysicsBody上的SKPhysicsJointpinned屬性贯要。
  • 定義場(chǎng)景中的物理實(shí)體在彼此接觸時(shí)如何相互作用疙驾。 請(qǐng)參閱SKPhysicsContactDelegate
  • 優(yōu)化你的物理模擬郭毕,以限制它必須執(zhí)行的計(jì)算的數(shù)量它碎。

SpriteKit使用國(guó)際單位制,也被稱為SI显押,或米 - 千克 - 秒系統(tǒng)扳肛。 必要時(shí),您可能需要在線查閱其他參考資料乘碑,以了解更多關(guān)于SpriteKit使用的物理方程式挖息。

  • SKPhysicsWorld

    • 封裝場(chǎng)景物理模擬的對(duì)象。
  • SKPhysicsBody

    • 將物理模擬添加到節(jié)點(diǎn)的對(duì)象兽肤。
  • SKPhysicsContact

    • 兩個(gè)物理實(shí)體之間的聯(lián)系的描述套腹。
  • SKPhysicsContactDelegate

    • 你的應(yīng)用程序可以實(shí)現(xiàn)的方法來(lái)響應(yīng)物理實(shí)體接觸。
  • SKPhysicsJoint

    • 連接物理實(shí)體的對(duì)象的抽象超類资铡。
  • SKPhysicsJointFixed

    • 將兩個(gè)物理實(shí)體鏈接在一起的節(jié)點(diǎn)电禀。
  • SKPhysicsJointLimit

    • 在兩個(gè)物理體之間施加最大距離的連接,就好像它們用繩子連接一樣笤休。
  • SKPhysicsJointPin

    • 將兩個(gè)物理實(shí)體連接在一起的聯(lián)合尖飞,允許獨(dú)立旋轉(zhuǎn)。
  • SKPhysicsJointSliding

    • 允許兩個(gè)物理實(shí)體沿一個(gè)軸滑動(dòng)的一個(gè)聯(lián)合店雅。
  • SKPhysicsJointSpring

    • 模擬連接兩個(gè)物理實(shí)體的彈簧的聯(lián)合政基。
  • SKFieldNode

    • 將物理效果應(yīng)用于場(chǎng)景的一部分的節(jié)點(diǎn)。
  • SKRegion

    • 一個(gè)任意區(qū)域的定義闹啦。
  • vector_float3

    • 用于執(zhí)行物理計(jì)算的浮點(diǎn)向量類型沮明。

11. Particle Systems

創(chuàng)建高性能粒子系統(tǒng)來(lái)模擬流體,煙霧和火災(zāi)窍奋。

  • SKEmitterNode

    • 創(chuàng)建和渲染粒子的節(jié)點(diǎn)荐健。
  • SKKeyframeSequence

    • 在不同時(shí)間指定的值(關(guān)鍵幀)之間執(zhí)行插值的對(duì)象酱畅。

12. Working with Shaders

利用著色器的強(qiáng)大功能為節(jié)點(diǎn)和粒子系統(tǒng)添加自定義效果。

  • SKShader

    • 一個(gè)對(duì)象摧扇,允許使用自定義的OpenGL ES片段著色器來(lái)渲染或過(guò)濾節(jié)點(diǎn)圣贸。
  • SKAttribute

    • 用于定制著色器的動(dòng)態(tài)每個(gè)節(jié)點(diǎn)數(shù)據(jù)的規(guī)范。
  • SKAttributeValue

    • 與節(jié)點(diǎn)關(guān)聯(lián)的動(dòng)態(tài)著色器數(shù)據(jù)的容器扛稽。
  • SKUniform

    • 統(tǒng)一著色器數(shù)據(jù)的容器吁峻。

13. Integrating with Other Frameworks - 與其他框架集成

將SpriteKit與其他框架(如SceneKitCore Image)集成。

  • SKEffectNode

    • 可以將Core Image filtersSKWarpGeometry失真應(yīng)用于其子項(xiàng)的節(jié)點(diǎn)在张。
  • SK3DNode

    • Scene Kit場(chǎng)景呈現(xiàn)為2D圖像的節(jié)點(diǎn)用含。

14. Classes

  • SKRenderer
  • SKTransformNode

后記

未完,待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帮匾,一起剝皮案震驚了整個(gè)濱河市啄骇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘟斜,老刑警劉巖缸夹,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異螺句,居然都是意外死亡虽惭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蛇尚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芽唇,“玉大人,你說(shuō)我怎么就攤上這事取劫〈殷裕” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵谱邪,是天一觀的道長(zhǎng)炮捧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)虾标,這世上最難降的妖魔是什么寓盗? 我笑而不...
    開(kāi)封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮璧函,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘基显。我一直安慰自己蘸吓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布撩幽。 她就那樣靜靜地躺著库继,像睡著了一般箩艺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宪萄,一...
    開(kāi)封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天艺谆,我揣著相機(jī)與錄音,去河邊找鬼拜英。 笑死静汤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的居凶。 我是一名探鬼主播虫给,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼侠碧!你這毒婦竟也來(lái)了抹估?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弄兜,失蹤者是張志新(化名)和其女友劉穎药蜻,沒(méi)想到半個(gè)月后指孤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體筋岛,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窝趣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年叠纹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了黑竞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绘面。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹭秋,死狀恐怖凿将,靈堂內(nèi)的尸體忽然破棺而出腾夯,到底是詐尸還是另有隱情颊埃,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布蝶俱,位于F島的核電站班利,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏榨呆。R本人自食惡果不足惜罗标,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望积蜻。 院中可真熱鬧闯割,春花似錦、人聲如沸竿拆。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丙笋。三九已至谢澈,卻和暖如春煌贴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锥忿。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工牛郑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敬鬓。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓淹朋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親列林。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瑞你,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • OC SpriteKit 官方翻譯 注:該文章來(lái)源來(lái)自蘋果開(kāi)發(fā)中心翻譯而來(lái) https://developer.a...
    站住二狗子閱讀 1,510評(píng)論 0 3
  • 這是本文原文的鏈接^ ..^ 運(yùn)用一個(gè)優(yōu)化過(guò)的動(dòng)畫系統(tǒng)、物理引擎和事件處理機(jī)制創(chuàng)作以精靈為基礎(chǔ)的2D游戲希痴。 Ove...
    逐水而上閱讀 448評(píng)論 0 0
  • SpriteKit是一個(gè)圖形渲染和動(dòng)畫基礎(chǔ)設(shè)施者甲,你可以使用它來(lái)動(dòng)畫化任 意紋理圖像,也稱為精靈砌创。SpriteKit...
    轉(zhuǎn)身是天涯閱讀 5,153評(píng)論 0 4
  • 版本記錄 前言 Core Image是IOS5中新加入的一個(gè)框架虏缸,里面提供了強(qiáng)大高效的圖像處理功能,用來(lái)對(duì)基于像素...
    刀客傳奇閱讀 1,814評(píng)論 0 0
  • iOS 蘋果官方Demo合集 字?jǐn)?shù)10517閱讀21059評(píng)論18喜歡144 其實(shí), 開(kāi)發(fā)了這么久, 不得不說(shuō), ...
    bingo居然被占了閱讀 10,102評(píng)論 2 31