iT邦幫忙

1

Unity 動畫控制基本觀念和腳本

  • 分享至 

  • xImage
  •  

有幾個基本觀念

一個本體,可能是一個UI,一個圖片,2D物件或3D物件
3D 會再有更多骨架控制的技術
2D 其實也可以做到骨架控制或更多效果
unity 有一個很強大的package :  Anima2D 可以做的很多2D的骨骼和面的控制
往後的文章再介紹
有幾個基本要素

  1. sprite

  2. Animator

  3. Animation
    4.監聽事件(UIEventListener)

  4. sprite
    2D動畫靠著就是許多張圖片串連形成動畫效果
    unity 的 sprite 是佔很重要的一個東西,動畫就是其一
    如果想找現成可用的sprite
    以下這個網址資源很豐富
    https://opengameart.org/content/2d-complete-characters
    下載自己喜歡的動畫後
    有些是一整張圖片,要去裁切,有些則已經裁切好了
    這裡講的是已裁好的,所以會有多張小圖
    如:
    https://ithelp.ithome.com.tw/upload/images/20200604/20123781dVynonl2KA.png

每張小張都要改變屬性,texture type >2d and ui,
sprite mode > single   這都是sprite 基本觀念
https://ithelp.ithome.com.tw/upload/images/20200604/201237812apv7X3b7D.png
2. Animator

在要控制的物件上,選取,
界面上  windows > animation 開啓功能視窗
https://ithelp.ithome.com.tw/upload/images/20200604/20123781Pl4YoXplG4.png
第一次還沒現任何動畫
所以要create 一個新的動畫

新的動畫裡目前影格也是空的
在把剛才的小圖片,照你想要的動畫效果拉進影格內

如果要產生多組動畫,供之後可以動態切換不同的動作,就再新增
https://ithelp.ithome.com.tw/upload/images/20200604/20123781XF8BJZzEZB.png

  1. Animation
    剛才新增的多組動畫,其實就是多個 animation
    開啓 windows> Animator
    裡面就會看到多組動畫
    https://ithelp.ithome.com.tw/upload/images/20200604/20123781n2EZHmlSgj.png
    最後介紹如果在程式裡動態切換不同的動畫
    也不難
    建立一個腳本,掛在要執行動畫的物件本體上
    腳本:
    private Animator animator;
    ……….

public void workaa1(){
            animator = GetComponent();
            animator.Play ("boy5");

             //切換動畫
    }

4.監聽事件(UIEventListener)
當製作好相關動畫,無論是按鈕觸發或是按鈕本身的動畫,都是還是要有個觸發的點
如果是NGUI,元件上大多是加上box collider(碰撞器),才能做觸發動畫的動作
如果是UIButton元件,只要添加腳本在UI本體上,可直接觸發事件 ,如 onClick,onHover
如果要另外自己撰寫 ,則要利用 UIEventListener 這個底層來做
接著前面介紹的 animator,animation, 如果一個button,想滑鼠移動到上面時,觸發動畫,移開時,動畫停止的話
...
UIEventListener.Get(gameObject).onHover += OnHover2 ;
.....
  void OnHover2(GameObject button,bool isOver)
    {
         Debug.Log(gameObject.name + " : Press : " + isOver);
         animator = GetComponent();
        if (isOver) {
             animator.Play ("ac1_2");  //觸發 ac1_2 animation
         } else {
            animator.Play ("ac1_0"); //觸發 ac1_0 animation
        }
    }
特別注意,這個範例是腳本直腳掛在button上,所以 function 名稱用 OnHover2 ,不能用OnHover  ,否則就和會衝突了

以上


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言