提示画像のような構造になっています。素材は3d game kit lite から持ってきました。やりたいことは武器と一緒に出る残像のようなエフェクトを演出したいのですがどうやらシェーダーでその動きをプログラムしてるらしいのですが実験コードを以下の提示コードのように書いてもエフェクトが動きませんこれは何をすればよいのでしょうか?
スクリプトで何か不足してると思うのですが調べても出てこなくまた3d game kit lite を解析しようと思いました規模が多く初学者にはどうしても難しいのでわかりません。
参考動画: https://www.youtube.com/watch?v=l-NcDKoHWEw
0:38秒の場所のようなエフェクト
検証用ソースファイル
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EffectTest : MonoBehaviour { private Animation anim; // Start is called before the first frame update void Start() { anim = GetComponent<Animation>(); } // Update is called once per frame void Update() { anim.Play(); gameObject.SetActive(true); } }
シェーダープログラム
Shader "Unlit/Swish" { Properties { _MainTex ("Texture", 2D) = "white" {} [HDR]_Color ("Color", Color) = (1,1,1,1) } SubShader { Tags {"Queue" = "Transparent" "RenderType"="Transparent" } ZWrite Off Cull Off Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 uv2 : TEXCOORD2; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; float4 _Color; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); o.uv2 = float4(v.uv, 0 ,0); float4 vertData = tex2Dlod(_MainTex, float4(o.uv, 0, 0)).rrrr; v.vertex.xyz -= v.normal * 0.02; v.vertex.xyz += vertData * v.normal * 0.1; o.vertex = UnityObjectToClipPos(float4(v.vertex.xyz, 1)); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 tex = tex2D(_MainTex, i.uv2); fixed4 col = tex2D(_MainTex, i.uv).r * _Color * tex.g * tex.b; // apply fog UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } }
>どうやらシェーダーでその動きをプログラムしてるらしいのですが
3d game kit liteのその斬撃エフェクトはStaffSwish01.animで動かしています。
残念ながらシェーダープログラムで動かしていません。
StaffSwish01のデータをそのまま使っているならこのコードでもゲーム再生させるだけで延々と斬撃エフェクトが出ます。
何を変更しているのか詳細が不明な為、StaffSwish01のアニメーションタイムラインの画像を追加して頂きたいです。
別質問の修正案に回答が乗りましたの。解決とします。
https://teratail.com/questions/240179
元々はStaffSwish01のアニメーションでそのマテリアルのoffsetを変更しているのですが本当に理解されているのでしょうか?
解決したのであればこちらにその解決内容の詳細を記載して自己解決とするようお願いします。
回答1件
あなたの回答
tips
プレビュー