-
2D像素人物可以通過擡左腳和擡右腳以及原畫三種照片完成動畫效果
-
把這三種圖片水平翻轉後,你就得到了所有需要的素材
-
最簡單的正常動畫邏輯需要4個動畫,左idle,右idle,左walk和右walk。
-
idle直接讓4張相同的原畫就行
-
walk則是左腳右腳左腳右腳左腳右腳,重複是爲了看起來流暢點(1秒6個關鍵幀)
-
狀態機的轉換需要想一下
-
我們設置了2個參數,speed和lookLeft,表示速度和朝向。
- idle到walk:檢測到speed>0.5觸發,根據朝向判斷哪個walk
- 爲了判斷條件簡單點,walk只設置到不同方向的walk和同向的idle,不設置不同方向的idle。
- 同理左idle也不需要到右idle。
- 此時邏輯正確了,但是你會發現轉化很卡頓,因爲需要把兩個狀態機之間的transition時間設置爲0,以及has exit time去掉。
- 通過腳本設置朝向和速度(通過移動向量的長度設置)
void Update()
{
// 移動相關
float moveX = Input.GetAxisRaw("Horizontal");
float moveY = Input.GetAxisRaw("Vertical");
Vector2 moveDirection = new Vector2(moveX, moveY);
Vector2 p = body.position;
p += moveDirection * speed * Time.deltaTime;
body.MovePosition(p);
// 動畫
if (moveDirection.x != 0)
{
if (moveDirection.x == 1) lookLeft = false;
else lookLeft = true;
}
anim.SetBool("lookLeft", lookLeft);
anim.SetFloat("speed", moveDirection.magnitude);// 向量長度
}