# 動畫
## unity chan
https://assetstore.unity.com/packages/3d/characters/unity-chan-model-18705
在unity asset素材中搜尋unity chan下載第一個免費的,並點擊open in unity

在unity中載入所有材料


unity chan-->art-->animation中有很多動畫
在unity中右鍵create一個資料夾並在裡面建立c#script與animation control
將建立的animation control拉至人物介面的animator中controller

對想要呈現的動畫按右邊的箭頭,點選綠色三角形的物件,角色即可動作

參考網址:
https://www.youtube.com/watch?v=NHRfKWfUae8&ab_channel=%E7%8E%8B%E7%91%9E
https://assetstore.unity.com/packages/tools/animation/pose-editor-146667

pose editor可以修改人物骨骼的位置
在人物最下面點選add component 即可加入
---
---
# 角色動畫
以Asset Store 中 Space Robot Kyle為例,這是一個有骨架的動畫模型,以下可以套用到所有有骨架的角色上。
## 1.加入角色
將 Inspector 切換到 Rig 標籤(骨骼綁定),並將 Animation Type 動畫類型從原本的 Legacy 改為 Humanoid 動畫類型(人形骨骼)。
(Confider可以確定模型位置是否正確,實線圓圈為必要,虛線圓圈為非必要)

## 2.物理元素(?)
套用Rigibody(剛體元件)

輸入Mass(質量)為100(類似他的體重)。
勾選 Constraints(約束)下方的 Freeze Rotation(凍結旋轉)(避免跌倒)。

套用Caspule Colider,這裡數據會因為不一樣的模型而不同(角色重心?)


## 3.Animation Controller
建立一個新的動畫控制器,可以管理角色的動作、設定流程、控制參數。

將Animator Controller拖曳到機器人的Animator元件下的Controller。

---
## 4.開啟動畫控制器
把待機動畫拖進去(要托前面是三角形的)

待機畫面完成
拖曳動作 走跟跑 (這個素材包很好玩的是有RM跟沒有RM兩種,差別在於地板會不會動,偷埋個伏筆XD),並建立箭頭(連結?)

添加變量 float類型的Speed

然後設定轉移條件(點擊指向walk箭頭),從不動到walk的條件是Speed>0.1的時候。
(右邊視窗往下拉有condition,按+就有了!)
(前面walk跟run順序顛倒了,我懶得重截,大家將就看一下XD)
剩下三個箭頭以此類推 走到跑就是大於0.6之類的,視到時候的設定而定。

基本設定完成~
## 5.建立一個腳本叫ChaMove,記得加到角色身上!
```
public class ChaMove : MonoBehaviour
{
public float speed = 3;
Animator anim;
Vector3 move;
void Start()
{
anim = GetComponent <> Animator > ();
}
void Update()
{
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertial");
move = new Vector3(x, 0, z);
//強制人物頭轉向,LookAt的點在人物所在位子的前面,缺點是回頭視直接回XD
transform.LookAt(transform.position + new Vector3(x, 0, z));
transform.position += new Vector3(x, 0, z) * speed * Time.deltatime;
UpdateAnim();
}
void UpdateAnim()
{
//magnitude指此向量長度,決定了Speed的快慢
anim.setFloat("Speed", move.magnitude);
}
}
```
以上做完,角色會自己走:)
1.Animator下的Apply Root Motion勾選了,所以動畫一播放就會自行移動。
如果前面選擇walk和run的時候是選擇大有RM的,說明人物真實移動,角色會跟著移動起來。
好處是人物移動根據美術決定,避免人無飄起來或直接Move的狀況。
但我們可以先把他按掉XD
2.按掉後雖然不會移動,但角色動畫還在播放?
因為卡在run01了!跑回走寫<0.7。
有延遲,因為每個動作都需要把動畫播完才會下一步。回到Animate controller,點擊箭頭(連結?)可以看到右邊有一個 Has Exit Time,不論播完與否,都可以直接跳轉。
## 附註 怎麼從Asset Store加入Asset呢?
Windows>Package Manager>My Asset
如果已經選擇但沒出現 那就按一下下面的整理圖示ㄅˊˇˋ
點擊想要得,在視窗左下角就有下載了!

# 動畫素材
https://assetstore.unity.com/3d/animations?category=3d%2Fanimations&free=true&orderBy=1&rows=264
# 使用素材:
1.人物https://assetstore.unity.com/packages/3d/characters/robots/space-robot-kyle-4696
2.動作動畫
https://assetstore.unity.com/packages/3d/animations/basic-motions-free-154271
# 參考:
1.https://www.cg.com.tw/Unity/Content/Unity_22.php
2.https://www.bilibili.com/video/BV1nq4y1n7sa?spm_id_from=333.999.0.0
# animation rigging
1.import animation rigging
2.對角色點選animation rigging -> bone renderer setup
