打飞机游戏场景背景设计一般很简单,由于角色敌人道具等都不与背景发生交互事件。开发者只须要根据设定的游戏类型,为游戏制做背景,模拟一个大环境便可。动画
材质UV动画,实现背景图片的滚屏循环。网站
步骤1:spa
建立背景载体。建立立方体->适当缩放物体,使物体形状上接近长方形,这样正面在视觉上接近竖版手机屏幕。设计
步骤2:SS3d
建立背景材质球。项目视图中建立材质球->将材质球赋给步骤1建立的cube物体->将材质球命名为UVAnim。code
步骤3:orm
3.1为材质球设置Shader文件。将制做好的UV循环播放的Shader文件,导入到项目视图中。这里须要注意,引擎对shader文件识别有必定命名条件,命名原则实例: Common_Diffuse_UVani.wjshader,其中只有VUani能够自由命名。选择UVAnim,common->Diffuse->UVani.wjshader,以下图2-3-1-1所示。htm
3.2屏幕的滚屏最终效果,屏幕一直像下滚动播放,shader文件以下所示,滚屏效果如图2-3-2-1所示。游戏
shader文件代码:事件
01 |
WJShader "Surface_Surface_Diffuse" |
02 |
{ |
03 |
Parameters |
04 |
{ |
05 |
Vector [_diffuseColor]<diffuse color= "" > = "1.0, 1.0, 1.0, 1.0" |
06 |
sampler2D [_diffuseMap]<diffuse map= "" (rgb)= "" > = "sys:white.dds" |
07 |
Vector [_speed] = "0.1, 0.1, 0.1, 0.1" |
08 |
} |
09 |
RenderQueue "Opaque" |
10 |
Technique "Surface_Surface_Diffuse" |
11 |
{ |
12 |
Pass |
13 |
{ |
14 |
RenderSTATE |
15 |
{ |
16 |
cullMode "Back" |
17 |
POLYGONMODE "Fill" |
18 |
ZTest On |
19 |
ZWrite On |
20 |
blendMode Off |
21 |
alphatest Off |
22 |
samplerState "g_LightLitMap" [Clamp] [Point] |
23 |
samplerState "_diffuseMap" [Wrap] [Linear] |
24 |
samplerState "g_Lightmap" [Clamp] [Linear] |
25 |
} |
26 |
27 |
CGCODESTART |
28 |
#pragma surface surfMain customlight lightmap:on |
29 |
sampler2D _diffuseMap; |
30 |
float4 _diffuseColor; |
31 |
float4 _speed; |
32 |
struct INPUT |
33 |
{ |
34 |
float2 _diffuseMap_UV; |
35 |
float3 input_Normal; |
36 |
} |
37 |
38 |
float4 customlight(SURFACE_OUTPUT sin, float3 viewDir, float lightAtten) |
39 |
{ |
40 |
float4 diffuse = float4(0.0,0.0,0.0,0.0); |
41 |
float4 specular = float4(0.0,0.0,0.0,0.0); |
42 |
Forward_Shading(sin.Normal,viewDir,sin.Shininess,diffuse,specular,lightAtten); |
43 |
float4 c = diffuse * sin.Diffuse; |
44 |
return c; |
45 |
} |
46 |
void surfMain(INPUT p, inout SURFACE_OUTPUT o) |
47 |
{ |
48 |
p._diffuseMap_UV.x += _speed.x*g_Time; |
49 |
p._diffuseMap_UV.y += _speed.y*g_Time; |
50 |
o.Diffuse.xyz = tex2D(_diffuseMap,p._diffuseMap_UV).xyz*_diffuseColor.xyz; |
51 |
o.Diffuse.w = 1.0f; |
52 |
o.Alpha = 1.0f; |
53 |
o.Specular = float4(0.0f,0.0f,0.0f,0.0f); |
54 |
o.Normal = float4 ( normalize(mul(g_InvTransModel, float4(p.input_Normal, 1.0f)).xyz), 0.0f ); |
55 |
o.Shininess = 1.0f; |
56 |
} |
57 |
CGCODEEND |
58 |
} |
59 |
} |
60 |
}</diffuse></diffuse> |
引擎官方网站:http://www.genesis-3d.com.cn/
官方论坛:http://bbs.9tech.cn/genesis-3d/
官方千人大群:59113309 135439306
YY频道-游戏开发大讲堂(彻底免费,按期开课):51735288
Genesis-3D开源游戏引擎:游戏起源,皆因有我!!!