UNITY x Puppet2D(三){程式與動畫}


延續前篇:UNITY x Puppet2D(二){動作系統與動畫錄製}
現在我們了解Puppet2D的運作方式了,用一個簡單的人形素材來測試我們的腳色控制程式,順便複習一下Animation的輸出(BAKE)
unet-hit-106先把準備好得的物件用Sprite的 Mulitple模式拆分好。


1.並寫先將部位命名方便組裝,以免待會不好辨識。
unet-hit-107
2.到場景上排列好後染上想要的顏色,就可以開始建立骨架。
unet-hit-108為了避免做錯可以反悔先將此狀態存檔。
3.將中間身體的部分轉成Mesh依照素材的需要決定是否要這樣做,一般來說手腳分開零件的素材,只有身體是一大塊需要做這樣的處理才能彎曲。
unet-hit-109順手選取中央區塊的骨架按下BindSmoothSkin綁定,彎曲看看正常與否。
4.接下來將頭、四肢分別使用ParentObjectToBone綁定,順便套上IK控制物件。
unet-hit-110調整好預設姿勢用Animation的SaveSelection儲存(方便調整下個動作)
5.確認Global_CTRL在原點上後掛上Animator並且創建Animation動畫。一套一套動作錄製完畢後就可以進行BAKE。unet-hit-111
6.先匯出兩個動作idle和walk來實作動作的切換,並且布置如下
unet-hit-112進入後預設是idle狀態,然後可進入行走狀態並且再回到idle
7.切換到Paramaters面版按下+號選擇bool創建一個新的動作參數叫做moving用來檢測是否在移動中。
unet-hit-113
8.接下來創建一隻程式PlayerCtrl.cs在我們的Global_CTRL上
unet-hit-114裡面要宣告一個可以裝入Animator的變數以及是否移動的bool值

using UnityEngine;
using System.Collections;
public class PlayerCtrl : MonoBehaviour {
	Animator animator;
	bool moving;
	// Use this for initialization
	void Start () {
		animator = GetComponent<Animator> ();
	}
	// Update is called once per frame
	void Update () {
		if(Input.GetKey(KeyCode.D)){
			moving=true;
		}else moving=false;
		animator.SetBool ("moving",moving);
	}
}

當按下D的時候就撥放移動的動畫,大功告成!!
unet-hit-115
9.以此類推把其他的行為控制建立起來,就達成動作的控制了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *