前提
ImageのFillを中央からの距離で行いたいです。
実現したいこと
- ImageのスプライトのFillを中央からの距離(円形)で行いたい
これを
マテリアルを保ったままこうしたい
内径(切り抜く大きさ)と外径(画像自体の大きさ)は時と場合によって変わるので予めテクスチャを加工しておく手段は使えません。
外径が500で内径が200だったり、外径が300で内径が183だったりします。
発生している問題・エラーメッセージ
MaskとUnmask( https://github.com/mob-sakai/UnmaskForUGUI )で画像の中央を切り落とそうとしましたが、Materialが設定されているとUnmaskが適用されません。
該当のソースコード
BurningPaper.shader
1// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 3Shader "Custom/2D/Dissolve" 4{ 5 Properties { 6 [PerRendererData] _MainTex ("Main texture", 2D) = "white" {} 7 _DissolveTex ("Dissolution texture", 2D) = "gray" {} 8 _Threshold ("Threshold", Range(0., 1.01)) = 0. 9 } 10 11 SubShader { 12 13 Tags { "Queue"="Transparent" } 14 Blend SrcAlpha OneMinusSrcAlpha 15 16 Pass { 17 18 CGPROGRAM 19 #pragma vertex vert 20 #pragma fragment frag 21 22 #include "UnityCG.cginc" 23 24 struct v2f { 25 float4 pos : SV_POSITION; 26 float2 uv : TEXCOORD0; 27 }; 28 29 sampler2D _MainTex; 30 31 v2f vert(appdata_base v) { 32 v2f o; 33 o.pos = UnityObjectToClipPos(v.vertex); 34 o.uv = v.texcoord; 35 return o; 36 } 37 38 sampler2D _DissolveTex; 39 float _Threshold; 40 41 fixed4 frag(v2f i) : SV_Target { 42 float4 c = tex2D(_MainTex, i.uv); 43 float val = tex2D(_DissolveTex, i.uv).r; 44 45 c.a *= step(_Threshold, val); 46 return c; 47 } 48 ENDCG 49 } 50 } 51}
試したこと
MaskとUnmask( https://github.com/mob-sakai/UnmaskForUGUI )で画像の中央を切り落とそうとしましたが、Materialが設定されているとUnmaskが適用されないようで困っています。
ImageのFillをコントロールすることで画像を任意の形に加工できることはわかりましたが、水平、垂直、Radial360、Radial180、Radial90の5種類しかないため画像の中央からの距離でfillをコントロールする(円形に切り抜く)ことができません。
Fillを中央からの距離で行う方法はないでしょうか。
補足情報(FW/ツールのバージョンなど)
Windows 11 21H2
Unity 2021.3.11f1 Personal

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。