はじめに
先日、行われた Japan XR Hackathon 2017 に参加しました。
今回はそんな、ハッカソンのことでは無く技術的にハマったのでログとして記します。
スプライトアニメの方法について、今々の方法がなかなかドキュメントなどの記載を見つけるのが大変で、ググルと正規サイトは古く無限ループに陥ってしまってしまいました。
Unity 5.6.1f1, 5.6.2f1 にて検証
前提
個人的な思い込みが理由なのかも知れませんが、Unityは3Dプロジェクトと2Dプロジェクトが作成できるので、スプライトアニメの2Dは3Dプロジェクトで作成したら出来無いと思い込んでいました。
解決方法
Youtube がこれ系の解決には有用であるという知見があるので、自分の欲しい情報に関連する単語を集合和積で絞られやいように順に入力し、欲しい結果を得ました。
Youtubeで動画検索
Unity 5 2d Animation Tutorial - Part1と言う動画を見つけた背景はもうすでに私の短期記憶には残っておりませんが、動画名からすると"unity5.6.2f1" "2d" "animation" "sprite"などのキーワードで検索したような気がしています。
Unity用2Dアニメーションスプライトの作成
上記、Youtubeのコメント欄、リンクのページのFree Downloadでカワイイ猫ちゃんと犬のスプライトアニメ用の素材を手にいれる。
ドラッグアンドドロップで仮にAssets/spritesなどのProjectビューへ配置する
スプライトアニメーションを設定する画像ファイルを選択しTexture TypeをSprite(2D and UI)の画像設定にする
Sprite(2D and UI)の画像設定からもう一度、Sprite ModeをPolygonの画像設定しApplyボタンを押す
選択されている画像をそのまま、Sceneビューへ配置するとスプライトアニメーションを生成される
名前を設定しSaveボタンでアニメーションコントローラーとアニメーションクリップが生成される
わたしはこのようなディレクトリ構成にした
問題解決後は余裕モーション
タップし続けるとアニメーション速度を早くし、タップを解除するともとのスピードにもどし、トコトコトコしてみました。
RelaxControl.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RelaxControl : MonoBehaviour {
public Animator animator;
// Use this for initialization
void Start () {
animator = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
//タップしたら無くなったら
if (Input.GetMouseButtonUp (0)) {
animator.speed = 1;
}
//タップの間中
else if (Input.GetMouseButton (0)) {
animator.speed = 60;
}
}
}
確認用動画 Sample Movie
動画のルートモーションのアニメーションスピードは、0.1にしてあります。