ファイブボックス一分間Unity講座 アイキャッチ画像
ファイブボックス一分間Unity講座 アイキャッチ画像

1分間 Unity講座 スクリプトファイルでAnimationを切り替える方法 - ファイブボックス

Animator.SetBool( "parameter名" , bool値 ) の活用

1分間 Unity講座 スクリプトファイルでAnimationを切り替える方法

前回のブログで、スクラッチの画像をつなげて AnimationClip を作成、プレイボタンを押すことでAnimationが自動で動くという内容を説明しました。

今回は複数のAnimationClipを、スクリプトファイル(プログラミング)で切り替える方法のご説明です。

Youtubeショート動画「一分間Unity講座」の補足説明にもなっていますので、気になる方は次の動画も併せてご確認ください。

素材画像の取り込み

まずは前回同様、スクラッチから画像を取得します。今回は Pico が待機状態の画像を作りたいと思います。

Scratchの画像加工

Scratchの「Pico」から pico-a と pico-b を使用します。待機中の動きがわかりやすくなるように、 pico-b の頭をちょっと下げてみました。

ともに「ビットマップに変換」を行ってUnityで使える形にしておきます。

スクラッチのスプライトをbitmapに置き換えて書き出す方法

書き出し

下降したスプライト、2つとも書き出します。

対象のスプライトを右クリック⇒「書き出し」で任意のフォルダに保存

スクラッチの画像を書き出す方法

Unityで取り込み

取得した画像をUnity内の所定の場所(サンプルではPicoフォルダ)にドラッグ&ドロップで取り込みます。

スプライトをUnityに取り込む方法

TextureTypeの変更

Unityの2DのSpriteとして使用するには、取り込んだ画像の Texture Type を「Sprite(2D and UI」に変更しなければなりません。

  1. Assets内に取り込んだフォルダの2つの画像を選択します
  2. Inspectorから、TextureTypeを変更します 初期値が「Default」になっている場合、ドロップダウンリストから「Sprite(2D and UI)」を指定します
  3. 右下の「Apply」ボタンを押して変更を適用させます
スプライトのTextureTypeを変更する方法

AnimationClipの追加

Animation Window の表示

Hierarchy で、歩くアニメーションを持った pico を選択します。

前回のブログで pico のオブジェクトを作成、歩くアニメーションが設定されています。

「Controlキー」+ 「6キー」を同時に押して、または上部メニューの Window ⇒ Ainmation ⇒ Animation で AnimationWindow を表示

UnityのAnimationWindowを表示

AnimationClip の追加

現状のAnimationClip(PicoWalking)にもう一つAnimesionClipを追加します。

左上の「PicoWalking」をクリック、「Create New Clip」を選択。

新しいAnimesionClipの名前を聞いてくるので、任意の名前で保存します。

サンプルでは「PicoIdle」に指定しました。

Unityで新規AnimationClipを作成する方法

作成したAnimationClipに上の課題で取得した2つの画像をドラッグ&ドロップします。

これで2つのClipが生成されました。

Unityで作成したAnimationClipに画像を取り込む方法

AnimatorController の設定

Parameterの作成

Window ⇒ Animation ⇒ Animator で Animation Window を表示します。

Hierarchyで pico を選択すると、下の様に先ほど作成した「PicoIdle」の State が追加されています。

左上の「Parameters」をクリック、「+ボタン」を押して、Bool型のパラメータを作成します。任意の名前を付けておきましょう。サンプルでは「IsWalk」にしています。

UnityでAnimatorのパラメータを作る方法

Bool型は「true」と「false」、いずれかを指定できるデータ型になります。

Transition の作成

続いてアニメーションの遷移を管理する「Transition」を作成します。

遷移元の「PicoWalking」の上で右クリック、「MakeTransition」を選択し遷移先の「PicoIdle」でドロップ。

反対方向のTransitionも同様の手順で作成します。

UnityのTransitionを作成

3.3 Transition の条件

それぞれのTransitionの遷移条件に、作成したParameterをセットします。

それぞれのTransitionを選択し、inspectorから以下の様に指定します。

■ PicoWalking ⇒ PicoIdle :「IsWalk」を true
■ Picoidle ⇒ PicoWalking :「IsWalk」を false

UnityのTransitionの設定

これでTransitionの設定は完成です。

この状態でPlayボタンを押し、parameterの隣の□をチェックすると、「IsWalk」の値が true ⇔ false と交互に切り替わります。

同時にステージ上の PicoのAnimationも変化しているのが確認できると思います。

4,Picoのプログラム作成

ここから作成したアニメションをスクリプトファイルから動かすプログラムを作成していきます。

Asset内に「PicoManager」などという任意の名前でスクリプトファイルを作成します。

作成したファイルはPicoオブジェクトにアタッチします。

アタッチの方法は、スクリプトファイルをオブジェクトの上にドラッグ&ドロップ。またはオブジェクトのInspectorにドラッグ&ドロップ、またはAddConponentで作成したスクリプトファイルを指定、などいろいろな方法があります。

Unityでスクリプトファイルをアタッチ

まずは使用する変数の宣言と初期値の代入です。

Animator animator;  //Animatorコンポーネントを管理する変数

void Start()
{
    //animator にAnimatorコンポーネント代入
    animator = GetComponent<Animator>();
}

今回は、何かのキーが押されたら歩くアニメーション、そうでなければアイドル状態のアニメーションになるような動きを取りたいと思います。

void Update()
 {
     if (!Input.anyKey)   //何も押されていなければ
     {
         animator.SetBool("IsWalk", false); //IsWalk を falseにする
     }
     else  //そうでなければ(何かが押されていたら)
     {
         animator.SetBool("IsWalk", true);  //IsWalk を trueにする
     }
 }

「!」は後続する内容の否定を表し、Input.anyKey(何かが押されたら)の否定、つまり(何も押されていなければ)を表します。

bool型の Parameterを変更するには以下の関数を使用します。

SetBool("parameter名", bool型)

これで今回の課題は完成です。


ファイブボックスでは、Unityの個別指導のオンラインレッスンを行っています。

ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

TOP