Unity 2Dゲーム開発日記 5日目 ~アニメーション~
アニメーションつける
[Unity]Unity4.3の2Dツールを使ってみる -コマアニメ編- | クスールブログ
結構いろいろややこしかったのでまとめてみる!
1. 1枚の画像に複数の状態のキャラを描いた画像を用意する。
2. Sprite Mode を Multiple にして、 Sprite Editor でがんばる。
3. Scriptに状態のフラグ立てとかのための変数を作る!
4. アニメーションを作って、
5. フラグ立てする Animator Controller をつくる。
ざっくりこんな感じだったと思う。
Script的にはこんな感じに書いた。
Player.cs
if(Input.GetKeyDown("x")){ isAttack = true; StartCoroutine("WaitForAttack"); }
IEnumerator WaitForAttack(){ yield return new WaitForSeconds(0.5f); isAttack = false; }
UpdateとFixedUpdate
どう違うんだろうと思って調べてみました。
- InputはFixedUpdateの中に書かない
- Rigidbodyの値を操作するときはFixedUpdate
みたい。
Update
- 描画フレームのアップデートに対応した関数。一定時間毎に呼ばれるとは限らない。
- 非物理オブジェクトを Translate 等で直接移動する場合は、こちらの関数の中でTime.deltaTime を使って時間を考慮して移動する。Time.deltaTime で得られる値は前回の Update からの経過時間。
FixedUpdate
- 物理シミュレーション用のアップデート関数で、必ず一定時間毎に呼ばれる。
- FixedUpdate 関数が呼ばれた後、必要な物理計算が行われる。
- 物理オブジェクト(RidigBody) に対して AddForce で力を加える場合等に利用する。
- 1フレーム(1回のUpdate)に対して複数回呼ばれる事がある。
- FixedUpdate の中で Time.deltaTime を呼ぶと、Update からの経過時間ではなく fixedDeltaTime が取得できる。
なるほどなるほど。
参考:
FixedUpdateについて考える - プログラムは、用いる言葉の選択で決まる
灯火: Unity : FixedUpdate と Update の違い
コルーチン
攻撃アニメーションのフラグのためにStartCoroutineっていうのを使ってるんだけど、初めて聞いたので調べてみた。
- 関数の途中で処理を中断し、再び関数を呼び出したときに中断した場所から再開を実行できる仕組み
処理が重いときとかに使うのかな?