前回のブログで、スクラッチの画像をつなげて AnimationClip を作成、プレイボタンを押すことでAnimationが自動で動くという内容を説明しました。
今回は複数のAnimationClipを、スクリプトファイル(プログラミング)で切り替える方法のご説明です。
Youtubeショート動画「一分間Unity講座」の補足説明にもなっていますので、気になる方は次の動画も併せてご確認ください。
1,素材画像の取り込み
まずは前回同様、スクラッチから画像を取得します。今回は Pico が待機状態の画像を作りたいと思います。
1.1 Scratchの画像加工
Scratchの「Pico」から pico-a と pico-b を使用します。待機中の動きがわかりやすくなるように、 pico-b の頭をちょっと下げてみました。
ともに「ビットマップに変換」を行ってUnityで使える形にしておきます。
1.2 書き出し
下降したスプライト、2つとも書き出します。
対象のスプライトを右クリック⇒「書き出し」で任意のフォルダに保存
1.3 Unityで取り込み
取得した画像をUnity内の所定の場所(サンプルではPicoフォルダ)にドラッグ&ドロップで取り込みます。
1.4 TextureTypeの変更
Unityの2DのSpriteとして使用するには、取り込んだ画像の Texture Type を「Sprite(2D and UI」に変更しなければなりません。
Assets内に取り込んだフォルダの2つの画像を選択します
Inspectorから、TextureTypeを変更します 初期値が「Default」になっている場合、ドロップダウンリストから「Sprite(2D and UI)」を指定します
右下の「Apply」ボタンを押して変更を適用させます
2,AnimationClipの追加
2.1 Animation Window の表示
ヒエラルキーで、歩くアニメーションを持った pico を選択します。
※前回のブログで pico のオブジェクトを作成、歩くアニメーションが設定されています。
「Controlキー」+ 「6キー」を同時に押して、または上部メニューの Window ⇒ Ainmation ⇒ Animation で AnimationWindow を表示
2.2 AnimationClip の追加
現状のAnimationClip(PicoWalking)にもう一つAnimesionClipを追加します。
左上の「PicoWalking」をクリック、「Create New Clip」を選択。
新しいAnimesionClipの名前を聞いてくるので、任意の名前で保存します。
サンプルでは「PicoIdle」に指定しました。
作成したAnimationClipに上の課題で取得した2つの画像をドラッグ&ドロップします。
これで2つのClipが生成されました。
3,AnimatorController の設定
3.1 Parameterの作成
Window ⇒ Animation ⇒ Animator でAnimation Window を表示します。
ヒエラルキーで pico を選択すると、下の様に先ほど作成した「PicoIdle」のStateが追加されています。
左上の「Parameters」をクリック、「+ボタン」を押して、Bool型のパラメータを作成します。任意の名前を付けておきましょう。サンプルでは「IsWalk」にしています。
Bool型は「true」と「false」、いずれかを指定できるデータ型になります。
3.2 Transition の作成
続いてアニメーションの遷移を管理する「Transition」を作成します。
遷移元の「PicoWalking」の上で右クリック、「MakeTransition」を選択し遷移先の「PicoIdle」でドロップ。
反対方向のTransitionも同様の手順で作成します。
3.3 Transition の条件
それぞれのTransitionの遷移条件に、作成したParameterをセットします。
それぞれのTransitionを選択し、inspectorから以下の様に指定します。
■ PicoWalking ⇒ PicoIdle :「IsWalk」を true ■ Picoidle ⇒ PicoWalking :「IsWalk」を false
これでTransitionの設定は完成です。
この状態でPlayボタンを押し、parameterの隣の□をチェックすると、「IsWalk」の値が true ⇔ false と交互に切り替わります。
同時にステージ上のPicoのAnimationも変化しているのが確認できると思います。
4,Picoのプログラム作成
ここから作成したアニメションをスクリプトファイルから動かすプログラムを作成していきます。
Asset内に「PicoManager」などという任意の名前でスクリプトファイルを作成します。
作成したファイルはPicoオブジェクトにアタッチします。
アタッチの方法は、スクリプトファイルをオブジェクトの上にドラッグ&ドロップ。またはオブジェクトのInspectorにドラッグ&ドロップ、またはAddConponentで作成したスクリプトファイルを指定、などいろいろな方法があります。
まずは使用する変数の宣言と初期値の代入です。
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型)
これで今回の課題は完成です。
Comments