silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例

silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例

ID:18957577

大小:1.34 MB

页数:17页

时间:2018-09-27

silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例_第1页
silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例_第2页
silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例_第3页
silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例_第4页
silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例_第5页
资源描述:

《silverlight.xna(c#)跨平台3d游戏研发手记:(十一)3d slg(策略战棋游戏)设计案例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、某天,当你一不小心发现已经够随心所欲的驾驭3D摄像机之时,任何类型的3D游戏都将成为囊中玩物,过往如烟。回忆逝去的童年让我极度惦记的SLG策略战棋游戏,或许对于大多数玩家来说,它费时费力不被讨好;然而深邃的内涵和无限可能的战略战术始终占据着我内心很大一片天地。于是,在本系列前5节2DSLG知识原理的基础上,http://pifu.ttplay8.cn萌发了移植一款基于平面的3DSLGDemo计划。首先,什么是基于平面的3DSLG游戏?大伙不妨先看看以下几款该类型经典游戏巨作截图-《英雄无敌6》、《文明5》和《三国志11》:无论地形单元格为四边形或六边形,其整体

2、地貌都不存在高低起伏(NoHeightMap);用游戏开发者的话说便是:三维空间中,一条轴用做旋转,http://www.zhaicao8.com另外两条轴形成类似2D中的Canvs平面承载对象。这样的设计更像是一盘3D化棋局,地形好比棋盘盘面,角色仿若棋子,附带一个环绕棋盘的360°轨道摄像机,无论视野还是战术方略都能得到淋漓尽致的体现。当然,除此之外,层次感更分明,基于HeightMap地形的立面3DSLG游戏亦备受日系游戏青睐,不乏大作,比如《火焰纹章晓之女神》、《皇家骑士团:命运之轮》和《三国志战记2》等,该类型游戏通常需要辅以更加复杂而强大的地形编辑

3、器,这些内容并不属于本节范畴,后续章节中若有时间再做补充:OK,做足了SLG游戏设计方面的知识准备,接下来我们要做的头等大事便是打开第4节的源码,神马差集运算、四叉树算法、蜂窝拓扑算法、A*算法等等统统一并拿来,将其中的Point改成Vector3(即原先的Point(X,Y)更换成Vector3(X,0,Y)),嘿嘿,原来编码也是可以这么浮云的。举个例吧,其中的DirectionScan方法在移植前后的对比:   2D游戏中所有我们看得到的图形都是通过Image图片的形式予以呈现,而到了3D游戏中,这条路已经行不通了。比如我们要绘制3D四边形或3D蜂窝状地形

4、单元格,此时就得自己编写基于三角面合成的3D面控件:Shape3D    /// 

    /// 3D图形(面)基类    ///     public abstract class Shape3D : Object3D {        protected Camera3D camera;        protected Texture2D texture;        protected BasicEffect effect;        protected short[] indices;        pro

5、tected VertexPositionTexture[] vertices;        public Shape3D(ContentManager content, GraphicsDevice device, Camera3D camera)            : base(content, device) {            this.camera = camera;            effect = new BasicEffect(device) { TextureEnabled = true };        }       

6、 string _TextureName;        /// 

        /// 获取或设置纹理资产名称        ///         public string TextureName {            get { return _TextureName; }            set {                _TextureName = value;                texture = content.Load(value);          

7、      effect.Texture = texture;            }        }        public override void Draw(GameTimerEventArgs e, ModelBatch modelBatch) {            effect.GraphicsDevice.BlendState = BlendState.AlphaBlend; //设置透明覆盖(透明显示纹理alpha透明部分)            effect.World = World;            effect.Vie

8、w = camera.View;   

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。