一、使用Sorting Layer對圖像分層
在Unity中,2D的界面中一旦放入多個圖像就需要對這些圖像進行分層,以此區分哪個圖顯示在前哪個圖顯示在后。分層設置一般在Render(渲染器)的組件中Sorting Layer屬性中設置。
這里我們在Sorting Layer中添加一些圖層方便對以后加入游戲的圖像進行分層。
添加Sorting Layer的兩種方式
1.在工具欄Edit -> Project Settings -> Tags and Layers -> Sorting Layers中添加
2.隨便選擇一個有Render組件的游戲對象,在檢查器Inspector中,選擇Render組件下拉選擇Add Sorting Layer
如圖這里添加了5個層,Background、Environment、Platforms、Player、Foreground。在Sorting Layers中越下面的Layer顯示越前。而同Sorting Layer時,Order In Layer數值越大越前。
(小技巧:新加到游戲中的圖像為Default默認層,這里可以把Default層放在移到了最下面,這樣一來添加的新圖像會顯示在最前面,方便我們調整。)
順便設置一下游戲中已有的圖像的圖層,背景back -> Background,地面Tilemap -> Platforms
二、添加角色
在下圖位置找到我們的角色Fox,把它拖到Hierarchy窗口中改名為Player,然后給它設置Sorting Layer -> Player
(如果之前在Sorting Layers中把Default移到了最下面,那么它就會顯示在最上面,否則剛放入游戲中時可能會被背景擋住看不到)
三、碰撞體Collider和剛體Rigidbody設置
在游戲中判斷兩個“圖像”是否接觸,需要設置碰撞體Collider,而剛體Rigidbody則是賦予質量、速度、重力等物理特性。
1.在Hierarchy中選中Player 或 在Sence窗口中選中Player,在其Inspector窗口最下面選中添加組件 Add Component,添加一個碰撞體 Box Collider 2D,剛體 Rigidbody 2D。
2.選中Tilemap在其Inspector窗口最下面選擇Add Component,添加一個Tilemap碰撞體 Tilemap Collider 2D。
3.調整Player的碰撞體
在Collider組件中選中Edit Collider,物體上就會顯示 可編輯的碰撞體邊界,拖拽這些邊界可以調整碰撞體Collider的范圍。如下圖
另外也可以通過Offset,Size屬性直接修改碰撞體Collider的邊界(這里設置了一個合適的數值,方便之后控制)
4.調整Tilemap的碰撞體
Tilemap的碰撞體比較特殊,因為Tilemap是我們一塊塊“畫”上的,所以當選中Tilemap時我們能看到每塊Tilemap都有一個碰撞體
這里我們可以通過Used By Composite屬性來把他們合為整個碰撞體。
添加完Composite Collider 2D后,地圖的碰撞體就變成了一整塊了。
5. 調整剛體Rigidbody
當Tilemap添加了Composite Collider 2D后,會自動添加一個Rigidbody 2D,需要把Body Type設置為靜態Static,否則地面會掉下去。
同時也需要在Player的Rigidbody上修改一些設置,選擇下圖選項
如此一來,運行游戲后我們可以看到角色穩穩的落在了地面上。接下來就要開始進行代碼編寫了。
相關屬性介紹
Collision Detection (碰撞檢測),用於控制避免高速運動的游戲對象穿過其他的對象而未發生碰撞。
(1)Discrete(離散):對場景中的所有其他碰撞體 (Collider) 全部使用離散 (Discreet) 碰撞檢測。該項為默認值。
(2)Continuous (連續):對剛體 (Rigidbody) 進行碰撞測試時,對帶有剛體的動態碰撞體 (Collider) 使用離散 (Discreet) 碰撞檢測;對不帶剛體的靜態網格碰撞體 (static Mesh Collider)使用連續 (Continuous) 碰撞檢測。
Interpolate (插值處理),用於控制剛體運動的抖動情況。
(1)None:不應用插值。
(2)Interpolate:內插。變換(Transform) 基於上一幀的變換 (Transform) 進行平滑處理。
(3)Extrapolate:外插。變換 (Transform) 基於下一幀的估計變換 (Transform) 進行平滑處理。
Constraints (約束),對剛體 (Rigidbody) 運動的限制。這是2D游戲,所以需要把游戲中運動的物體(如:玩家,敵人)Z軸凍結