はじめに
UIデザインで欠かせない機能のひとつがMaskの活用です。
MaskとAnimationを組み合わせることで、UIの印象を大きく変える格好いいデザインが可能になります。
ただちょっと扱いが難しいところもあるので、覚書もかねての簡単なアニメーション作成手順をまとめました。
さっそく作成!
まずはImage
やText
を用意します。
親のImage
にMask
コンポーネントを付けます。
すると子に配置したオブジェクトが親の形にクリッピングされます。
でもテキストは表示したい…
そんな時は表示したいオブジェクトを選択し、インスペクターでMaskableのチェックを外します。
表示された!
アニメーション作成
次にアメーションの作成に入ります。
フォルダの適当な場所を右クリックし、Create > Animation
を選択し、Animation Clip
を作成します。
Image
のオブジェクトを作成し、Mask
とAnimation
コンポーネントを追加してアニメーションさせたいオブジェクトを子に入れます。
Animationコンポーネントに先ほど作ったAnimation Clipをアタッチします。
*通常はAnimation Controller
の作成とAnimator
コンポーネントを使いますが、今回は単発アニメーションなのでAnimation
コンポーネントの使用にしています。
もっと複数のアニメーション遷移やトリガーを使いたい場合は前者の方法を使いましょう。
Animation Clip
をクリックし、Animationウィンドウを起動します。
Add PropertyでMask
のSize.Delta
を選びます。
バーを0:00に合わせ、Xの値を0にします。
Animationコンポーネントがついているオブジェクトを選択し、Animationウィンドウの再生ボタンを押すとテキストが左から現れるアニメーションができました。
*Animationをループさせたい場合はAnimation Clip
のインスペクターにあるLoop Time
にチェックを入れます。
*また、右から左へ現れるようにしたい場合は親のPivot
を1に、子のAnchor Presets
をright middle
にしてみてください。
今回はPivot
を0、Anchor Presets
をleft middle
にしています。
実はMask、親のImageのアルファ値が0だと機能しなくなってしまいます。
親の画像の形に切り取るのには便利ですが、親を透明にしたい時には不便。
▼ このように子ごと消えてしまいます。
最低でも0.2くらいにしないといけませんが、うっすら下に色が見えて不格好…
そんな場合はRect Mask 2D
コンポーネントを使います。
こちらをMaskの代わりに入れるだけで画像のアルファ値を0にしても機能します。
おわりに
今回はMaskを使用したアニメーションの作成手順をまとめてみました。
Maskは非常に便利ですが、アルファ値を0にできないといった落とし穴に気づかないこともあり、私自身躓いてしまった部分でもあります。
また、左から右へ現れるようにするアニメーションの作成も非常に悩んだ部分だったので忘れないうちにアウトプットできてよかったです。
今回の記事はほとんど覚書のような内容になってしまいましたが、自分が行き詰まったこの経験が、同じように悩む誰かの助けやヒントになれば嬉しいです。
使用サイト
- GIF変換サイト:Ezgif