樱花草WWW日本在线观看,色婷婷精品大在线视频,久久婷婷五月综合色国产香蕉,老牛精品亚洲成AV人片

  • UNITY3D 動(dòng)畫(huà)教程 - 學(xué)習Flappy Bird了解Native 2D中的Sprite,Animation

    2018/8/29??????點(diǎn)擊:

    引子

    上一次我們講了MonoBehaviour的前世今生,了解了游戲中的每一個(gè)GameObjec都是由腳本控制的,這一次我們開(kāi)始將Unity中Native 2D中的Sprite,并且使用Animation來(lái)讓Sprite動(dòng)起來(lái)。

    在接下來(lái)的幾篇博客里,我會(huì )通過(guò)做一個(gè)Flappy Bird來(lái)講解Unity中各個(gè)組件的使用,項目的源代碼在這里:Unity Flappy Bird。歡迎各位前去Fork和Star。

    如何創(chuàng )建Sprite

    創(chuàng )建一個(gè)Sprite可以遵循如下步驟

    1. 將一張圖片拖動(dòng)到Project視圖中的某個(gè)文件夾的方式來(lái)添加Sprite資源。
    2. 修改Sprite資源的各項屬性,如果是SpriteSheet的話(huà)還要對它在Sprite Editor中進(jìn)行分割。
    3. 將Sprite資源拖動(dòng)到Scene視圖中,或者按住ctrl鍵同時(shí)選中SpriteSheet中的幾張圖片拖動(dòng)到Scene視圖中,這種方式會(huì )同時(shí)創(chuàng )建出一個(gè)動(dòng)畫(huà)。

    創(chuàng )建Sprite的過(guò)程中請注意:

    • Sprite是作為Sprite Renderer組件的一個(gè)屬性來(lái)添加到一個(gè)GameObject中的。
    • 在Sprite Renderer中的Sorting Layer屬性允許你設置Sprite被渲染的優(yōu)先級。
    • SpriteRenderer使用在Sprite屬性中的Texture, 但是使用Material中的Shader(著(zhù)色器) ,默認選擇的Sprites/Default 這種Shader是忽略光照的,而Sprites/Diffuse 這種Shader則是不會(huì )忽略光照的。如果你將Material設置為None時(shí),你會(huì )發(fā)現無(wú)法顯示Sprite,因為你沒(méi)有對這個(gè)Sprite進(jìn)行著(zhù)色。

    Sprite的詳細設置

     SpriteSheet:顧名思義,就是指把多個(gè)Sprite放到一張圖片里。一般是把一段幀動(dòng)畫(huà)放在一張圖片里面,游戲引擎會(huì )將這個(gè)SpriteSheet進(jìn)行分割,輪流播放SpriteSheet中的每一幀,形成一個(gè)動(dòng)畫(huà)序列。

     我分別說(shuō)一下注意事項

    1. 當Sprite Mode為Single時(shí),可以在Inspector中設置Sprite的pivot point,如果你以前使用過(guò)Cocos2d-x的話(huà),就會(huì )知道其實(shí)這個(gè)pivot point就相當于Cocos2d-x中的anchor point。在Scene中,我們會(huì )以這個(gè)pivot point為中心,來(lái)對Sprite進(jìn)行旋轉,平移等Transform的設置。如果你使用的是SpriteSheet的話(huà) ,可以在Sprite Editor中對每一個(gè)Sprite進(jìn)行pivot的設置。
    2. 由于在Unity中的距離單位是Unit,為了保證3D與2D的一致性,所以在2D游戲中,我們也使用Unit作為計量單位。Pixel to Units幾位這一轉換比例。比如一張寬度為100的Sprite圖片,在Scene中顯示的長(cháng)度為1Unit。
    3. 在Sprite Editor中可以進(jìn)行Automatic和Grid兩種形式的切割,一般來(lái)說(shuō),Automatic就已經(jīng)可以比較好的解決問(wèn)題了,一旦遇到我們需要幾張Sprite圖片大小一致時(shí),可以使用Grid(網(wǎng)格)切分,來(lái)限制每個(gè)Sprite的大小。

    如何為Sprite添加一個(gè)Animation

    有兩種方式可以創(chuàng )建動(dòng)畫(huà),一種是我們上邊說(shuō)過(guò)的,將SpriteSheet中的幾個(gè)Sprite同時(shí)拖動(dòng)到Scene視圖中。

    另一種則是在Scene視圖中,選中想要添加動(dòng)畫(huà)的GameObject,然后在A(yíng)nimation視圖中,點(diǎn)擊Add Curve來(lái)對GameObject的各種屬性進(jìn)行動(dòng)畫(huà)播放。

    在Unity中,Animation是一個(gè)比較寬廣的概念,并不局限于幀動(dòng)畫(huà)。它包括了GameObject的各種屬性的動(dòng)態(tài)變化。如果你點(diǎn)擊了Add Curve之后,你會(huì )看到這樣的界面:

    在上面的圖片里你可以發(fā)現從Position到Color,從Rotation到Sprite都是可以進(jìn)行Animation的,因為在Unity中的Animation實(shí)際上是在添加一個(gè)變化曲線(xiàn)。而不是我們普遍理解的Animation。

    另一個(gè)要解釋的就是Animator和Animation的區別,要注意,如果想躺一個(gè)Animation動(dòng)起來(lái),那么一定需要兩個(gè)Assest資源,分別是Animation Clip和Animator Controller兩種資源。在Project中是以下的表現形式:

    animator是一個(gè)動(dòng)畫(huà)狀態(tài)機,它控制了各個(gè)Animation之間的切換。在后面的博客中我們會(huì )講到它的使用。=w=

    Animation的詳細設置

    我在上面的圖中,把Animation視圖中的一些重要的案件在圖中標注出來(lái)了。

    1. 關(guān)鍵幀是Animation的轉折點(diǎn),你會(huì )在這一幀處設置一些Sprite的變化點(diǎn),或者是Position這種數據的轉折點(diǎn)。
    2. 動(dòng)畫(huà)事件可以在動(dòng)畫(huà)的某一幀設置,在這一幀可以設置的所謂動(dòng)畫(huà)事件即是這一GameObject上所有腳本組件的非重載函數(即排除掉OnUpdate,Start之類(lèi)的函數)。設置完動(dòng)畫(huà)事件之后。你會(huì )發(fā)現每次動(dòng)畫(huà)循環(huán)一遍,這個(gè)函數都會(huì )在該幀被調用。
    3. 增加一條變化曲線(xiàn),上文中說(shuō)道,可以對任意屬性進(jìn)行變換。
    4. Sample指的是取樣,即在1s內設置多少幀,在圖中我們可以看到1s的間隔中有12個(gè)虛線(xiàn),代表的就是在這一秒中,我們設置了12幀來(lái)調節動(dòng)畫(huà)。注意這里的sample和我們?yōu)橛螒蛟O置的刷新幀率是沒(méi)有關(guān)系的。

    總結

    總的來(lái)說(shuō),在Unity的Animation中編輯動(dòng)畫(huà) 是比較方便的,和以前使用Cocos2d-x編輯動(dòng)畫(huà)時(shí),有種鳥(niǎo)槍換炮的感覺(jué)。但是對Sprite本身的支持 還是令人有些不爽,因為做2D時(shí),還是不習慣Unity中德坐標體系,因為制作2D游戲的我們經(jīng)常害死會(huì )把像素Pixel當成是重要的度量單位,Unity換成了Unit為單位之后,感覺(jué)有些不知所措,不過(guò)這就是3D引擎思考方式的一種變化吧。

    失敗是什么?沒(méi)有什么,只是更走近成功一步;成功是什么?就是走過(guò)了所有通向失敗的路,只剩下一條路,那就是成功的路。作者:王選易

    免费少妇A级毛片| 西西444WWW无码大胆| 最近免费观看高清韩国日本大全| 狠狠CAO2020高清视频| 亚洲精品成人片在线观看精品字幕| 女人18毛片水真多|