unity簡單實現融合樹動畫

2021-09-03 02:53:57 字數 2153 閱讀 8626

本篇部落格將簡單介紹用狀態機制作行為樹動畫,我將用這個行為樹去簡單的控制人物移動,待機和後退,和左右轉頭。盡量用最少的**,實現最豐富的功能。

行為樹:又稱為混合樹,乙個流行的ai動畫技術,涵蓋了層次狀態機,事件排程,事件計畫,行為等一系列技術。在高度模組化狀態,去掉狀態中的跳轉邏輯,使狀態變成乙個行為,稱之為行為樹。

在部落格中我會用例項去展現行為樹的魅力和優勢所在,好戲開始:

首先看一下最終效果:

融合樹動畫

普通animator動畫

通過上面兩種動畫的對比,我們可以看出其中的差距,行為樹的動畫看起來更加自然流暢一下,讓人感覺不到切換的突兀感,覺得整個動畫就像乙個人物在做某些行為,而普通動畫在切換的時候可以看到,非常突兀,當然也可以進行細節處理,但綜合起來要比行為樹麻煩太多。

這時有讀者可能就會問,圖一控制了前,後,左,右,左轉頭,右轉頭,並且轉頭和移動結合了起來,**會不會很複雜? 不會,放心,當然不會!全程只有四句**。 圖一和圖二同樣都只用了四句**,沒錯!就是四句**,就輕而易舉的控制了這麼複雜的動畫的切換,和移動。而普通animator動畫和行為樹動畫比起來卻差了這麼多,沒有轉頭的動畫,也沒有移動轉頭的結合,更沒有流暢自然的動畫,所以,這就是行為樹的優勢所在。

呦,還不信?

回首~掏~出來讓你們看看

真的只有四句**

下面貼出移動和控制動畫神奇的原始碼:

/// /// 狀態機

///

private animator animator;

//轉換速度標籤

private int speedid = animator.stringtohash("speed");

//把字串轉換為雜湊id

private int verticalid = animator.stringtohash("vertical");

private int horizontalid = animator.stringtohash("horizontal");

void start ()

void update () {

animator.setfloat(verticalid, input.getaxis("vertical"));

animator.setfloat(speedid, input.getaxis("horizontal"));

//在動畫樹里 x代表z軸 y軸代表x軸

transform.localposition += transform.forward * time.deltatime *input.getaxis("vertical") * 3;

transform.rotate(transform.up * time.deltatime * input.getaxis("horizontal") * 90);

核心**只有update裡四句,好了下面一起來製作乙個簡單的行為樹動畫吧!

1.首先我們需要建立行為樹,和建立float型別的引數,vertical 代表前後 horizontal代表左右。

2.雙擊blend tree行為樹進去,會顯示如下介面:

這裡我們需要新增些動畫,我這裡新增了5個

3.我們選擇compute position—x position from—angular speed(deg)把旋轉設定為根據度數,通過人物的朝向來融合旋轉動畫。(這個千萬要記得設定,不然旋轉度數可能會出問題)

喜歡我關注我,我是壹葉成名。

BleedTree動畫混合樹 Unity

unity在中土大陸的大肆推廣能從廣泛的中文翻譯資料中看出。所以,手冊才是王道。遊戲動畫中的乙個常見任務是在兩個或更多相似運動之間混合。最佳的已知示例可能是根據角色速度混合行走和奔跑動畫。另乙個示例是角色在奔跑過程中轉彎時向左或向右傾斜。重要的是區分轉換 transition 與混合樹 blend ...

UIImageView實現簡單動畫

關於ios動畫,自己在以往的開發中用到的很少,這次遇到這麼個需求 在乙個操作完成前我需要加上動畫效果,其實只是兩張不斷替換。當然用uiimageview載入。在請教別人之後,知道了uiimageview使用動畫的方法,我又把它跟mbprogresshud相結合使用,如下 新增開門動畫 mbprogr...

實現簡單的動畫

在ios開發中,想實現一些小動畫是非常容易的,系統會根據某個屬性的值改變自動形成動畫,例如 x值本來是10,然後改為100,系統會通過平移的方式讓x值慢慢從10變到100 兩種實現方式 1.頭尾式 uiview beginanimations nil context nil 需要執行動畫的 提交 u...