標籤:unity3d培訓 unity3d遊戲 unity培訓 3d遊戲開發 unity3d學習
歡迎來到unity學習、unity培訓、unity企業培訓教育專區,這裡有很多U3D資源、U3D培訓視頻、U3D教程、U3D常見問題、U3D項目源碼,【狗刨學習網】unity極致學院,致力於打造業內unity3d培訓、學習第一品牌。
引子
這一次我們開始將Unity中Native 2D中的Sprite,並且使用Animation來讓Sprite動起來。
在接下來的幾篇部落格裡,我會通過做一個Flappy Bird來講解Unity中各個組件的使用,項目的原始碼在這裡:Unity Flappy Bird。歡迎各位前去Fork和Star。
如何建立Sprite
建立一個Sprite可以遵循如下步驟
將一張圖片拖動到Project視圖中的某個檔案夾的方式來添加Sprite資源。
修改Sprite資源的各項屬性,如果是SpriteSheet的話還要對它在Sprite Editor中進行分割。
將Sprite資源拖動到Scene視圖中,或者按住ctrl鍵同時選中SpriteSheet中的幾張圖片拖動到Scene視圖中,這種方式會同時建立出一個動畫。
建立Sprite的過程中請注意:
Sprite是作為Sprite Renderer組件的一個屬性來添加到一個GameObject中的。
在Sprite Renderer中的Sorting Layer屬性允許你設定Sprite被渲染的優先順序。
SpriteRenderer使用在Sprite屬性中的Texture, 但是使用Material中的Shader(著色器) ,預設選擇的
Sprites/Default
這種Shader是忽略光照的,而
Sprites/Diffuse 這種Shader則是不會忽略光照的。如果你將Material設定為None時,你會發現無法顯示Sprite,因為你沒有對這個Sprite進行著色。
Sprite的詳細設定
SpriteSheet:顧名思義,就是指把多個Sprite放到一張圖片裡。一般是把一段幀動畫放在一張圖片裡面,遊戲引擎會將這個SpriteSheet進行分割,輪流播放SpriteSheet中的每一幀,形成一個動畫序列。如:
對應中的1, 2, 3三點,我分別說一下注意事項
當Sprite Mode為Single時,可以在Inspector中設定Sprite的pivot point,如果你以前使用過Cocos2d-x的話,就會知道其實這個pivot point就相當於Cocos2d-x中的anchor point。在Scene中,我們會以這個pivot point為中心,來對Sprite進行旋轉,平移等Transform的設定。如果你使用的是SpriteSheet的話 ,可以在Sprite Editor中對每一個Sprite進行pivot的設定。
由於在Unity中的距離單位是Unit,為了保證3D與2D的一致性,所以在2D遊戲中,我們也使用Unit作為計量單位。Pixel to Units幾位這一轉換比例。比如一張寬度為100的Sprite圖片,在Scene中顯示的長度為1Unit。
在Sprite Editor中可以進行Automatic和Grid兩種形式的切割,一般來說,Automatic就已經可以比較好的解決問題了,一旦遇到我們需要幾張Sprite圖片大小一致時,可以使用Grid(網格)切分,來限制每個Sprite的大小。
如何為Sprite添加一個Animation
有兩種方式可以建立動畫,一種是我們上邊說過的,將SpriteSheet中的幾個Sprite同時拖動到Scene視圖中。
另一種則是在Scene視圖中,選中想要添加動畫的GameObject,然後在Animation視圖中,點擊Add Curve來對GameObject的各種屬性進行動畫播放。
在Unity中,Animation是一個比較寬廣的概念,並不局限於幀動畫。它包括了GameObject的各種屬性的動態變化。如果你點擊了Add Curve之後,你會看到這樣的介面:
在上面的圖片裡你可以發現從Position到Color,從Rotation到Sprite都是可以進行Animation的,因為在Unity中的Animation實際上是在添加一個變化曲線。而不是我們普遍理解的Animation。
另一個要解釋的就是Animator和Animation的區別,要注意,如果想躺一個Animation動起來,那麼一定需要兩個Assest資源,分別是Animation Clip和Animator Controller兩種資源。在Project中是以下的表現形式:
animator是一個動畫狀態機器,它控制了各個Animation之間的切換。在後面的部落格中我們會講到它的使用。=w=
Animation的詳細設定
我在上面的圖中,把Animation視圖中的一些重要的案例在圖中標註出來了。
主要畫面格是Animation的轉折點,你會在這一幀處設定一些Sprite的變化點,或者是Position這種資料的轉折點。
動畫事件可以在動畫的某一幀設定,在這一幀可以設定的所謂動畫事件即是這一GameObject上所有指令碼組件的非重載函數(即排除掉OnUpdate,Start之類的函數)。設定完動畫事件之後。你會發現每次動畫迴圈一遍,這個函數都會在該幀被調用。
增加一條變化曲線,上文中說道,可以對任意屬性進行變換。
Sample指的是取樣,即在1s內設定多少幀,在圖中我們可以看到1s的間隔中有12個虛線,代表的就是在這一秒中,我們設定了12幀來調節動畫。注意這裡的sample和我們為遊戲設定的重新整理幀率是沒有關係的。
總結
總的來說,在Unity的Animation中編輯動畫 是非常方便的,和以前使用Cocos2d-x編輯動畫時,有種鳥槍換炮的感覺。但是對Sprite本身的支援 還是令人有些不爽,因為做2D時,還是不習慣Unity中德座標體系,因為製作2D遊戲的我們經常害死會把像素Pixel當成是最重要的度量單位,Unity換成了Unit為單位之後,感覺有些不知所措,不過這就是3D引擎思考方式的一種變化吧。
參考資料
SpriteRenderer的官方文檔更多內容,請訪問【狗刨學習網】unity極致學院http://edu.gopedu.com
聲明:此篇文檔時來自於【狗刨學習網】社區-unity極致學院,是網友自行發布的Unity3D學習文章,如果有什麼內容侵犯了你的相關權益,請與官方溝通,我們會即時處理。
通過製作Flappy Bird瞭解Native 2D中的Sprite,Animation