我正在尝试创建一个GameObejct,如果激活,则将其背后的任何颜色反转。理想情况下,当该GameObject出现/变为活动状态时,将从其中心点扩展到一定大小的半径。
因此,请设想一个圆,其比例在1或2秒钟内从x = 0和y = 0逐渐增加到x = 5和y = 5,并反转后面的任何颜色。实际圆多长或多大无关紧要,仅是一个示例。我尝试只创建一个我在网上找到的带有遮罩和着色器的GameObect,但根本没有用,我什至不知道如何为扩展设置动画。
有人对我如何实现我的梦想效果有任何想法吗?
谢谢!
答案 0 :(得分:3)
这里是一个着色器,除了反转颜色外什么也不做。
重要的部分是$ cat tst.awk
match($0,/^(-*)([^-]+)(-+)([^-]+)/,a) {
offset = length(a[1])/4 + 1
for (i=offset+1; i<=3; i++) {
tags[i] = ""
}
tags[offset] = a[2]
vals[tags[1]][tags[2]][tags[3]] = $0
}
END {
PROCINFO["sorted_in"] = "@ind_str_asc"
for ( tag1 in vals ) {
for ( tag2 in vals[tag1] ) {
for ( tag3 in vals[tag1][tag2] ) {
print vals[tag1][tag2][tag3]
}
}
}
}
$ awk -f tst.awk file
store:LA----------------400.68
----copies--------------110.34
--------classmate-------110.34
----pencil--------------90.00
--------HB--------------44.5
--------classmate-------45.5
----pens----------------200.34
--------butterflow------90.00
--------reynolds--------110.34
--------trimex----------NA
和Alpha:Blend
。
Blend OneMinusDstColor Zero
至于动画,金的答案很简单。或者,您可以通过以下代码为比例尺设置动画:
Shader "Custom/Invert"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Transparent" "Queue"="Transparent" }
LOD 200
Blend OneMinusDstColor Zero
PASS
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 3.0 Alpha:Blend
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
fixed4 _Color;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = float2(0,0);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return _Color;
}
ENDCG
}
}
FallBack "Diffuse"
}
此特定代码将使子画面“脉冲”。像这样:
我认为您应该能够从该示例制作自己的缩放脚本。
答案 1 :(得分:1)
选择您的GameObject-> Window-> Animation-> Animation-> Create-> Save-> Add Property-> Transform-> Scale。在0:00关键帧处,将x,y,z的比例设置为1。单击到1:00关键帧,并将x,y,z的比例设置为2。按播放,动画应从1的比例开始循环至2。