動作

動作播放的流程

1. motion class
a. 產生動作實體(讀取mtn)
b. 設定

2. 管理動作的class
a. 產生實體
b. 播放動作
c. 更新模型參數
d. 動作結束



1-a. 產生動作實體(讀取mtn)

播放動作需要使用Live2DMotion這個class。
動作中會利用的資訊為副檔名「.mtn」的動作檔案。
使用loadMotion函數讀取.mtn動作資訊。
幾乎所有的平台都提供從檔案路徑讀取和位元組陣列讀取這2種讀取方法。


Live2DMotion motion = Live2DMotion::loadMotion( path );


Live2DMotion motion = Live2DMotion::loadMotion( byteArray, size );

這樣讀取。



1-b. 動作的設定

動作中主要有以下項目設定。
即使不設定這些內容一樣可以播放。

* 動作開始時的淡入時間
setFadeIn函數設定,getFadeIn函數取得。
淡入時間單位為毫秒。淡入淡出時間
不另作設定時預設值為1000。

動作結束時的淡出時間
setFadeIn函數設定,getFadeIn函數取得。
淡出時間單位為毫秒。
不另作設定時預設值為1000。

* 重複播放ON/OFF
setLoop函數設定,isLoop函數取得當前值。
設定為true時,結束時再從頭播放。
無其他動作切入或結束命令時將會無限重播。
不另作設定時預設值為false(不重複)。

設定例 (※請於動作播放前先設定)
motion->setFadeIn( 1000 );//淡入時間設定1000ms
motion->setFadeOut( 1000 );//
淡出時間設定1000ms
motion->setLoop( true );//重複播放


2-a. 產生管理動作class的實體

讀取個別動作檔案,在Live2DMotion class中設定。
但是如要將這些動作套用到模型上(作成動畫)則需使用MotionQueueManager class。

MotionQueueManager motionManager = new MotionQueueManager();//產生管理動作class



2-b. 播放動作

播放動作需使用MotionQueueManager的startMotion函數。

記憶體自動釋放 (僅C++)
第2引數可設定動作結束時從記憶體中刪除與否。
設為true時,Live2D內會自動呼叫delete,並從記憶體中刪除。
這對C++以外的語言沒有意義。


motionManager->startMotion( motion, false );//播放動作



2-c. 更新模型的參數

只用startMotion播放動作不會讓模型播放動畫。
請使用updateParam函數設定將現在播放的動作參數設定到模型裡。
也可以調整播放速度。詳情參閱

motionManger->updateParam( live2DModel );//更新動作




2-d. 動作結束

動作在播放時間結束後就會自動結束。
不過也可以使用stopAllMotions函數隨意設定結束時間點。
如果在fade途中使用這個函數,那麼即使正在播放兩個以上的動作,這些動作也會立即終止。

motionManger->stopAllMotions();//動作結束