2D遊戲簡介
2D遊戲是指二維互動式動畫,也就是我們通常所說的‘2D動畫’。
隻不過在遊戲方面,這種動畫可以根據使用者的需求而進行互動
2D遊戲基本特征
二維互動式動畫的基本特征如下(主要是針對3d遊戲):
⒈貼圖
傳統的2d遊戲中的美術資源(人物行走、人物狀态、地圖等等)都是以png或jpg的圖形檔案渲染而成,而3d遊戲中的美術資源多數是以模型為主.
⒉視角
2d遊戲是沒辦法完成視角轉換的.因為2d遊戲的美術資源是平面圖.即某種美術資源的前、後、左、右不能夠同時出現在遊戲裡.但3d遊戲卻可以完成視角轉換.
⒊渲染
2d遊戲的所有美術資源可以不經過引擎的渲染就能使用,但3d遊戲的任何美術資源都必須經過引擎的渲染才能使用.
早期Unity制作2D遊戲的方法
以前版本的Unity做2D遊戲,雖然能做,但是很麻煩。
比如你可以将一張紋理賦予一個”面片”網格,然後用腳本控制它的動畫調整它的位移.如果你要使用實體引擎,那麼還要将這個Obeject處理3D的,是以你還要確定你的Object要有足夠的深度以確定他們在其它軸向上不起沖突.或者你選用一個第三方插件,如2D Toolkit或者Orthello 2D Framework,他們有着強大的功能,但同樣需要你去做一些限制工作。
Unity4.3原生的2D開發環境
Unity4.3增加了原生的2D開發環境。
如果你想更改這個設定,可以選擇”Edit\Project Settings\Editor”打開編輯器設定,在”Default Behavior Mode”中改模式為2D,如下圖:
“Default Behavior Mode”(預設行為模式)定義你項目在導入Assets時的預設導入設定,當設定為3D模式時,Unity假設你将導入的檔案建立為紋理類型(如:PNG檔案);當設定為2D時,Unity假定你想要的導入的資源為Sprite類型
建立序列幀動畫
篇幅較長請檢視以下的連結
建立序列幀動畫
場景視圖的2D模式
場景視圖裡有個控制二維切換的按鈕,點選2D按鈕可以激活2D模式,像下面這樣:
這個按鈕會将場景相機在透視視圖和正交投影視圖之間進行切換。
當觀察透視視圖時,遠離相機的物體看起來更小,就像在現實世界中眼睛看物體一樣,然而當正交投影視圖的時候,物體的大小并不受與相機的距離影響。是以,在二維模式時,一個對象不管位置離相機遠近,隻要尺寸不變,它看起來将沒有變化的。
下面的圖可以清晰的看到2D和3D模式視窗的差別
你隻能做視圖的平移操作,Y軸指向上,X軸指向右。
這個設定是不會影響到遊戲播放時效果的,因為它隻是幫助你組織場景裡的對象,甚至後期你會在建立2D遊戲的同時創造3D遊戲,你可能需要在這兩種模式間根據需要切換
制造精靈
切片精靈表
Sprite圖層
什麼是drawcall
Unity每次在準備資料并通知GPU渲染的過程稱為一次Draw Call。
一般情況下,渲染一次擁有一個網格并攜帶一種材質的物體便會使用一次Draw Call。
對于渲染場景中的這些物體,在每一次Draw Call中除了在通知GPU的渲染上比較耗時之外,切換材質與shader也是非常耗時的操作。
Draw Call的次數是決定性能比較重要的名額。
drawcall和setpass call
不少開發者誤以draw call為unity效率的直接衡量名額;
unity官方注意到了這點,draw call這個說法比較有誤導性;實際上draw call本身的call過程消耗比較低,消耗高的是draw call對象集合的改變過程和集合中各個對象的處理過程,比如dynamic batch和static batch相同draw call下性能差别很大。
是以unity的統計界面有了setpass call,其意思大緻是場景需要切換處理的pass數,因為渲染的對象是通過材質介以材質所含的shader中的各個pass最終得以顯示的,這個名額對衡量性能來說比“draw call”相對準确一點。
2D實體
- 2D剛體
mass:0代表着無限大,也就是“靜态剛體”。範圍:0.001到10000。
Linear Drag:線性阻尼,也就是物體在運動過程中收到的阻力。
Angular Drag:角度阻尼系數,剛體在旋轉過程中受到的阻力。
GravityScale:重力縮放,控制着重力的大小,其數值範圍為-100000到100000.
Fixed angle:固定角度,指剛體在運動過程中保持固定的角度,這就相當于關閉了剛體的旋轉功能。
IsKinematic:控制剛體是否變為運動學物體,就是我們的剛體不在受實體引擎的控制,而受transform或者是動畫等等的控制。
SleepingMode:睡眠,Unity會臨時把處于靜止狀态的實體模拟去除,這樣主要是節省計算資源。
1、Never Sleep:永遠不睡眠。
2、Start Awake:Awake時就進入睡眠。
3、Start Asleep:立即進入睡眠。
Collision Detection:碰撞發現。
1、Discrete Detection:正常狀态下的檢測。
2、Continuous:連續性性檢測。
- 2D碰撞器
unity2D的碰撞體和3D的差不多。在unity2D中,有Box Collider2D(盒子碰撞器),Circle Collider2D(圓形碰撞器),Edge Collider2D(邊緣碰撞器)和Polygon Collider2D(多邊形碰撞器)。Edge Collider2D和Polygon Collider2D是3D項目裡面沒有的。
Polygon Collider2D:。對于多邊形碰撞器有一個比較特殊的功能,也就是可以編輯多變形碰撞器的外形。我們可以在多邊形上拖動可以出現一個頂點,拖動次頂點,可以改變碰撞器的外形。按住Ctrl鍵的同時,單擊頂點,可以把頂點删除。
剛體屬性的介紹:
Material:定義剛體表面的一些實體特性,例如摩擦力,柔軟程度等,由此決定了它對其他物體的反彈能力等。
Is Trigger:屬于3D碰撞的都應該知道這個屬性的作用。勾了就會産生的是剛體碰撞。不勾就是觸發碰撞,此時碰撞的兩個物體之間可以不使用剛體去進行驅動。
void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log(coll.gameObject.name);
}
void OnTriggerEnter2D(Collider2D other)
{
Debug.Log(other.name);
}
- 2D實體材質