《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇02:滚屏》

2.滚屏

滚屏概述:

打飞机游戏场景背景设计一般很简单,由于角色敌人道具等都不与背景发生交互事件。开发者只须要根据设定的游戏类型,为游戏制做背景,模拟一个大环境便可。动画

滚屏原理:

材质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


图2-3-1-1

3.2屏幕的滚屏最终效果,屏幕一直像下滚动播放,shader文件以下所示,滚屏效果如图2-3-2-1所示。游戏


图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开源游戏引擎:游戏起源,皆因有我!!!

相关文章
相关标签/搜索