版本記錄
版本號(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ì)象潮改,都是UIResponder
或NSResponder
的子類,因此您可以繼承任何節(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ì)象提供五嫂。
- 顯示SpriteKit內(nèi)容的對(duì)象系吭。 這個(gè)內(nèi)容由
-
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)败匹。
- 呈現(xià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)變形的定義魔市。
- 基于網(wǎng)格的遵循
-
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)
SKFieldNode
和SKPhysicsBody
捷绒。 - 決定場(chǎng)景中的物理實(shí)體是否應(yīng)該相互連接。 請(qǐng)參閱
SKPhysicsBody
上的SKPhysicsJoint
和pinned
屬性贯要。 - 定義場(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與其他框架(如SceneKit
和Core Image
)集成。
-
SKEffectNode
- 可以將
Core Image filters
或SKWarpGeometry
失真應(yīng)用于其子項(xiàng)的節(jié)點(diǎn)在张。
- 可以將
-
SK3DNode
- 將
Scene Kit
場(chǎng)景呈現(xiàn)為2D圖像的節(jié)點(diǎn)用含。
- 將
14. Classes
SKRenderer
SKTransformNode
后記
未完,待續(xù)~~~