《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開源遊戲引擎:遊戲起源,皆因有我!!!

相關文章
相關標籤/搜索