美景之屋5在线观看_成人区精品一区二区婷婷_91av在线视频播放_午夜影院在线_一本久久综合亚洲鲁鲁五月天_国产精品一区在线观看

  • 您的位置:首頁 > 新聞動態 > Unity3D

    UNITY3D 動畫教程 - 學習Flappy Bird了解Native 2D中的Sprite,Animation

    2018/8/29??????點擊:

    引子

    上一次我們講了MonoBehaviour的前世今生,了解了游戲中的每一個GameObjec都是由腳本控制的,這一次我們開始將Unity中Native 2D中的Sprite,并且使用Animation來讓Sprite動起來。

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

    如何創建Sprite

    創建一個Sprite可以遵循如下步驟

    1. 將一張圖片拖動到Project視圖中的某個文件夾的方式來添加Sprite資源。
    2. 修改Sprite資源的各項屬性,如果是SpriteSheet的話還要對它在Sprite Editor中進行分割。
    3. 將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. 當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的設置。
    2. 由于在Unity中的距離單位是Unit,為了保證3D與2D的一致性,所以在2D游戲中,我們也使用Unit作為計量單位。Pixel to Units幾位這一轉換比例。比如一張寬度為100的Sprite圖片,在Scene中顯示的長度為1Unit。
    3. 在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視圖中的一些重要的案件在圖中標注出來了。

    1. 關鍵幀是Animation的轉折點,你會在這一幀處設置一些Sprite的變化點,或者是Position這種數據的轉折點。
    2. 動畫事件可以在動畫的某一幀設置,在這一幀可以設置的所謂動畫事件即是這一GameObject上所有腳本組件的非重載函數(即排除掉OnUpdate,Start之類的函數)。設置完動畫事件之后。你會發現每次動畫循環一遍,這個函數都會在該幀被調用。
    3. 增加一條變化曲線,上文中說道,可以對任意屬性進行變換。
    4. Sample指的是取樣,即在1s內設置多少幀,在圖中我們可以看到1s的間隔中有12個虛線,代表的就是在這一秒中,我們設置了12幀來調節動畫。注意這里的sample和我們為游戲設置的刷新幀率是沒有關系的。

    總結

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

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

    主站蜘蛛池模板: 久久伊人精品一区二区三区 | 精品国产一区二区三区av片 | 老人内射视频代码免费视频 | 高清国产一区二区三区在线 | 亚洲宅男天堂 | 草久免费视频 | 狠狠色狠狠色很很综合很久久 | 成人午夜福利视频镇东影视 | 国产精品偷伦视频免费观看的 | 青久草视频 | 九一精品国产白色高跟鞋 | 色综合精品久久久久久久 | 成人在线视频一区二区三区 | 日韩超碰人人爽人人做人人添 | 玖玖在线观看 | 亚洲乱码国产乱码精品精98午夜 | 天天曰夜夜操 | 欧美日国产| 天天操夜夜操国产精品 | 国产传媒一级片 | 白嫩美女嘘嘘嘘看个够 | 岛国毛片一区二区 | 美女毛片一区二区三区四区 | 美女禁区A级全片免费观看 国产1区在线观看 | 日本一区二区在线高清观看 | 国产精品视频一区二区三 | 国产大片中文字幕在线观看 | 外企女老板被洋老外啪啪 | 国产精品videossexohd | 黄色毛片免费在线观看 | 香蕉黄色片 | 最近最新中文av在线 | 国产精品主播一区二区 | 免费观看福利视频 | 国产成人亚??合 | 又黄又刺激又黄又舒服 | 被仇人调教成禁脔h虐 | 真人新婚之夜破苞第一次视频 | 日本精品视频在线 | 女人性高朝床叫视频尖叫声 | 久久精选视频 |