2.滚屏

滚屏概述:

打飞机游戏场景背景设计通常很简单,因为角色敌人道具等都不与背景发生交互事件。开发者只需要根据设定的游戏类型,为游戏制作背景,模拟一个大环境即可。

滚屏原理:

材质UV动画,实现背景图片的滚屏循环。

实现方法:

步骤1:

创建背景载体。创建立方体->适当缩放物体,使物体形状上接近长方形,这样正面在视觉上接近竖版手机屏幕。

步骤2:SS

创建背景材质球。项目视图中创建材质球->将材质球赋给步骤1创建的cube物体->将材质球命名为UVAnim。

步骤3:

3.1为材质球设置Shader文件。将制作好的UV循环播放的Shader文件,导入到项目视图中。这里需要注意,引擎对shader文件识别有一定命名条件,命名原则实例: Common_Diffuse_UVani.wjshader,其中只有VUani可以自由命名。选择UVAnim,common->Diffuse->UVani.wjshader,如下图2-3-1-1所示。


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

 


《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇02:滚屏》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. AO总结10:MapControl控件

    MapControl对应ArcMap中的数据视图,它封装了Map对象,并提供了额外的属性.方法.事件用于: 1 管理控件的外观.显示属性和地图属性 2 添加并管理控件中的数据层 3 装载Map文档控件 ...

  2. nginx的location配置

    http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html http://blog.csdn.net/yanook/article/details/100 ...

  3. UML与数据流图

    Ref: <数​据​库​设​计​理​论​及​应​用​(​3​)​—​—​需​求​分​析​及​数​据>http://wenku.baidu.com/link?url=hbhJFytMKT8A ...

  4. 语言基础:C#输入输出与数据类型及其转换

    今天学习了C#的定义及特点,Visual Studio.Net的集成开发环境和C#语言基础. C#语言基础资料——输入输出与数据类型及其转换 函数的四要素:名称,输入,输出,加工 输出 Console ...

  5. eclipse运行emulator时,PANIC:Could not open emulator的解决办法

    使用eclipse启动emulator的时候,出现PANIC:Could not open emulator,模拟器无法正常的运行. 经过搜索得知,因为我的SDK的环境变量出问题,需要重新配置下环境变 ...

  6. Codeforces Round #254 (Div. 2) B. DZY Loves Chemistry (并查集)

    题目链接 昨天晚上没有做出来,刚看题目的时候还把题意理解错了,当时想着以什么样的顺序倒,想着就饶进去了, 也被题目下面的示例分析给误导了. 题意: 有1-n种化学药剂  总共有m对试剂能反应,按不同的 ...

  7. POJ 3233 矩阵乘法

    题意:求解A+A^2+...+A^k 题解: 1)利用通和公式,原式=(A^k+1 - A)(A - O)^-1 时间复杂度O(n^3lgk) 2)递归求解,A+A^2+...+A^k=(A+A^2+ ...

  8. 自己用的框架写了一个PHP模版解析类

    <?php if(!defined('IS_HEARTPHP')) exit('Access Denied'); /** * template.class.php 模板解析类 * * @copy ...

  9. windows 下使用 MinGW + msys 编译 ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但 ...

  10. DataGuard相同SID物理Standby搭建

    Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数据不受 ...