![見出し画像](https://assets.st-note.com/production/uploads/images/104976278/rectangle_large_type_2_ef83bebde7f5d6ec0fa3160aeb66277e.png?width=1200)
【Unity】斜めゲージ(端が直線にならないゲージ)を作る
Unityでゲージを実装しようと思うとUIのImage TypeのFilledを使うのが一般的だと思うのですが、これを使用すると斜めなどのゲージの端っこが直線じゃない時に変な感じになっちゃうんですよね。
![](https://assets.st-note.com/img/1683457504810-17DfMoxynz.png?width=1200)
これを解消するためにはShaderを使ったりすると上手く出来るようなのですが、解説されているのを見るとまぁまぁややこしそう。
もっと簡単に出来ないかと思ってスプライトマスクを使った方法で実装してみました。
まずはゲージ画像を用意します。
![](https://assets.st-note.com/img/1683457749792-sgwSOqY2pN.jpg)
![](https://assets.st-note.com/img/1683457749848-DXYOGXUzQ9.jpg)
![](https://assets.st-note.com/img/1683457749814-J0pQC3JFJx.jpg)
まずは①ゲージ背景をHierarchyに表示します。
Sorting Layerで表示したいレイヤーにしておきます。
![](https://assets.st-note.com/img/1683458193053-M3twnxQFIB.png?width=1200)
次に②ゲージ本体を①ゲージ背景の子として設置します。
Mask InteractionをVisible Outside Maskに変更
![](https://assets.st-note.com/img/1683458249285-wrDJ3L0z3d.png?width=1200)
①ゲージ背景を右クリック→2D Object→Sprite Maskを子として設置
③ゲージマスク用画像をSpriteの所で指定して良い感じの位置にマスク座標を合わせます。
![](https://assets.st-note.com/img/1683458399287-y9FbDRZC8r.png?width=1200)
あとは③ゲージマスク用画像のX軸の数値をスクリプトで変更出来るようにすればゲージのように動いてくれます。
![](https://assets.st-note.com/img/1683458527354-oZoknd1jRY.png?width=1200)
動かすとこんな感じです↓
Unityの標準機能だと斜めのゲージが上手く表現出来なかったのでスプライトマスク使って斜めでも表示出来るようにしてみた。#Unity #gamedev pic.twitter.com/eK3jjVLLN7
— kt. (@xxxx_kt_xxxx) May 7, 2023