【超簡単】Unityでストライプのモーショングラフィックスを実装

プログラム実装

今回はストライプのモーショングラフィックス作成方法を丁寧に説明します。

非常に簡単なので、是非ご活用ください。

 

実装にはUnityを用いていますが、Unity以外でも同様にすれば使えます。

 

今回作るもの

まず最初に、今回作るものはこちら。

 

モーショングラフィックスでありがちな、ストライプ柄(ボーダー柄)を使った表現です。

 

用意する素材

必須素材はこの1つ。

 

複数本の線をUnity上で組み合わせても良いのですが、こっちの方が圧倒的に楽です。

 

背景は分かりやすいように黒くしてありますが、実際には背景は透過させてください。

簡単に作れますが、一応こちらでも背景透過版を用意しました。

必要であれば保存して自由に使ってください。

 

素材作成時のポイントとしては、一番上の線の左端よりも、一番下の線の右端が右に来るようにしてください。

別の言い方をすれば、一番上と一番下の線が水平座標で重なるように、ということ。

のちほどUnity側で利用します。

 

この素材を1つ用意するだけで、完成品の一番左側は作れます。

これに加えて、真ん中のものは外側の正方形枠の素材を、右のものは円形の素材を用意してください。(背景は透過)

 

Unityでの実装方法

それではモーションの実装方法です。

先ほどの素材はUnityにインポートしておいてください。

 

まずは説明用として、こちらのモーションの実装を説明します。

 

素材の下準備

まず、インポートしたストライプ画像をインスペクタで表示し、

  • Filter Mode を「Pointer (no filter)」
  • Compression を「None」

にします。

必須ではありませんが、こうすることで画像が勝手にぼかされなくなります。

 

次にSprite Editorを開き、Borderの左右端を画像のように指定します。

 

これをできるようにするのが、上述した「素材作成時のポイント」が必要な理由です。

指定できたらApplyを押してからSprite Editorを閉じます。

 

これで素材の下準備は終了。

 

Imageを作成

Canvasを作成していない場合は作成し、その子要素としてImageオブジェクトを作成します。

名前は「StripeMask」としておきました。

Spriteは未設定のままで大丈夫です。

 

さらに、StripeMaskの子要素にもうひとつImageオブジェクトを作成し、Spriteにストライプ画像を指定します。

オブジェクトの名前は「Stripe」にしました。

 

現状はこんな感じ。サイズはまだ適当です。

 

大きさや位置を変更

まずはSpriteMaskの大きさを目的の領域と位置に変更します。

今回は先ほどの状態のままで行きます。

 

次に、Stripeの大きさを伸ばします。

高さはSpriteMaskと同じにしてください。

 

ImageコンポーネントのImageTypeをSlicedに変更し、Pixel Per Unit Multiplierの値とRectTransformのWidthの値を調整して横に伸ばします。

Pixel Per Unit Multiplierの値を大きくすると各平行線のズレが小さくなり、Widthの値を大きくするとイン・アウト以外の時間が長くなります。

ただここら辺はあとで確認しながら調整した方が良いと思うので、とりあえず適当な値で大丈夫。

今回はPixel Per Unit Multiplierを0.2、Widthを10000にしました。

(Canvasの設定次第で異なるので、大体下のシーンビュー画像のようになればオッケー)

 

 

Maskをかける

次に親であるStripeMaskにMask効果を適用します。

 

StripeMaskにMaskコンポーネントをアタッチし、Show Mask Graphicのチェックを外します。

 

こんな感じでStripeMaskからはみ出た部分を隠してくれます。

 

この状態で子オブジェクトのStripeを左右に動かしてみてください。

このようになったはずです。

 

初期位置として左側の見えない位置に移動させておいてください。

 

Stripeを動かす

それでは動かしてみましょう。

Stripeを左から右に移動させれば目的のモーションは完成です。

 

動かし方は何でもよくて、

  • スクリプトのUpdate()内でTime.deltaTimeをpositionに加算する
  • DOTweenでアニメーションさせる
  • AnimatorやAnimation、Timelineなどを使う

あたりであればどれでも大丈夫です。

(個人的にはイージング設定しやすさの観点で DOTween > Animator > スクリプトの順にお勧め)

 

ちなみにDOTweenの場合は、デフォルトのOutQuadよりもInQuadの方が抜ける際にスッと抜けるのでおすすめです。(今回は珍しくLinearでも良いかも?)

 

あとは実際に確認しながら先ほどの「Pixel Per Unit Multiplier」「Width」移動速度を調整して好みのモーションを仕上げます。

 

これで完成!

 

ちょっと応用

Stripeの移動方向を変更することによって、最初に挙げた完成品の左のものが作れるわけです。

 

真ん中と右ものも、少し修正するだけで簡単に作れます。

 

真ん中の例

真ん中のものは、まず枠のImageオブジェクトを用意し、その子要素にStripeMaskを作成します。

階層は [枠Image] > StripeMask > Stripe という感じ。

 

枠ImageとStripeMaskは大きさを揃え、Stripeの不透明度を少し下げると良い感じになります。

 

右の例

右のものは単純で、左のもののStripeMaskのSpriteに円の画像を指定するだけです。

画像を用意すれば、円以外でも自分の好きな形にすることができます。

 

UIでの応用例

Unityで実装するモーショングラフィックスについて解説してきましたが、ゲームUIのサイトなので最後にゲームのUIに適用してみた例を挙げておきます。

 

こんな感じになりました。

 

いろいろ組み合わせると、よりオシャレな演出ができるかと思います。

 

まとめ

Unityを用いて簡単にストライプのモーショングラフィックスを作る方法を紹介しました。

ゲームUIでの使い道は比較的限られるかもしれませんが、引き出しのひとつとして持っておくのはおすすめです。

 

  • 複数の線が描かれた素材を用意する
  • Sliceで伸ばして使う
  • Maskで余計な部分を隠す

コメント

タイトルとURLをコピーしました