今回はUnityに備わっている |
Unityのアニメーションは |
冬月は2D,UIのフェードインやシーン切り替えでの移動等 |
ゲームは中身のゲーム性も重要ですが |
最低限アニメーションで必要なのは |
Animator Controllerは名前の通り |
Animationは霊夢が言った |
Animator ControllerはProjectで右クリックメニューから生成できます |
次にAnimationを作成します |
UnityのメニューバーのWindowから |
で、こっちがAnimationを操作するときに使うUIだな |
AdobeのFlash Professionalを触ったことある人は |
変化させた箇所があると |
アニメーションの設定方法としては |
子のObjectからアニメーションさせたい子Objectを選択して |
選択すると、右にタイムランみたいな表記がされますので |
上のデバッグ再生の項目も赤色になっていると思います |
フェードインアニメーションなら |
アニメーションができたら |
緑色のEmptyは最初から作られています |
上の画像の場合ですと |
矢印は必ずEmptyからつなげる必要があるわ |
そうすると、項目から矢印が伸びるから |
矢印が繋がったら、アニメーション終了後に |
アニメーションの再生を任意に行いときもあるので |
Animatorの左側のリストには |
左上の+ボタンがあるので+をクリックするとリストを増やすことができるぞ |
登録したフラグは矢印に対して設定していきます |
設定の仕方は右下部にあるConditionsの+ボタンを押すと |
public class BattleMainScript : MonoBehaviour { // アニメーションの管理 // 前面スクリーン ///前面スクリーン public GameObject mFrontScreenObject; ← Inspectorで該当のGameObjectを設定しておく ///前面スクリーンAnimator private Animator mFrontScreenAnimator; /// ============================================================== ///初期化処理 /// -------------------------------------------------------------- /// /// ============================================================== void Start () { // アニメーター取得 if (mFrontScreenObject != null) { // 前面スクリーン mFrontScreenAnimator = mFrontScreenObject.GetComponent(); } } /// ============================================================== /// 更新処理 /// -------------------------------------------------------------- /// /// ============================================================== void Update () { // アニメーションのフラグを操作する mFrontScreenAnimator.SetBool("isStart", true); // アニメーションの再生時間を取得 mAnimatorStateInfo = mFrontScreenAnimator.GetCurrentAnimatorStateInfo(0); mAnimeTimeLength = mAnimatorStateInfo.length; mAnimeTimeCur = 0; } }
いろいろ端折ったけど |
mFrontScreenAnimator.SetBool("isStart", true);
キモとなるのがこれだな
設定しているフラグを変更する関数になるぞ
SetBoolは設定した型に合わせて変更してくれ
第1引数に変数名
第2引数に変数値を入力します
すると即値が挿入されてアニメーションが再生されるようになります
冬月の設計はこんな感じです
あまり効率的な方法では無いと思いますが
わかりやすいかなと思います
mAnimatorStateInfo = mFrontScreenAnimator.GetCurrentAnimatorStateInfo(0); mAnimeTimeLength = mAnimatorStateInfo.length; mAnimeTimeCur = 0;
こっちは必要ない人もいると思いますが説明しようと思います |
GetCurrentAnimatorStateInfoが |
mAnimatorStateInfo.lengthが再生時間ね |
mAnimeTimeCurが再生時間を図る変数です |
これで一通りのアニメーションはできるはずです |
あと、アニメーションには |
Animationのタイムランの上部をクリックすると青い棒が出てくるぞ |
Inspectorには |
アニメーションの方法はこんな感じです これをするだけでぐっと完成度は上がりますので 皆様も一手間してみてはどうでしょうか? |