大家好!今天的问题是:如何实现下一个行为:在不缩放纹理的情况下实现缩放行为?所以问题是如何实现下一个行为。我在2D项目中有一个游戏对象,它随着时间的推移会向一侧缩放(实际上是向两边缩放,但也会向缩放方向移动),你可以在下面的gif图上看到它(还不允许直接粘贴gif图)。
如果我附加纹理(精灵?),它也会随着对象的缩放而缩放--这不是我想要做的。一个解决方案是设置 夾子 或 重复 纹理检查器中的参数。但这对我来说也是不可接受的。我不知道如何确切地解释我想做什么......但让我们想象一下,我的最终纹理是不可见的,而在对象的缩放过程中,该纹理的新部分变得可见。你可以在下一张图片上看到这种行为。
我想我需要某种着色器来实现它,所以请提供给我这个脚本(我对着色器编码完全是个新手,只知道基础知识)。考虑到我将对贴在缩放对象上的纹理进行动画处理,也许这也会影响到着色器脚本。干杯。
如果你不打算在你的地板的左边右边有一个定义的开始,你可以在你的shader中使用世界x位置作为uv.x坐标,并使用一个纹理,这将会循环。
下面的代码应该是一个非常基本的例子,你的寻找(注意顶点着色器部分)。
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = float2(v.vertex.x, v.uv.y);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return tex2D(_MainTex, i.uv);
}