1.Unity3D官方案例 - 2DGame - 帽子接球
2.å¦ä½ä½¿ç¨Unity Studio
3.韩版传奇 2 源码分析与 Unity 重制(三)客户端渲染管线
Unity3D官方案例 - 2DGame - 帽子接球
在Unity3D的游戏源码游戏源码2DGame示例中,开发者首先创建了一个场景,游戏源码游戏源码设置了Background和Foreground工作层,游戏源码游戏源码用于管理不同层级的游戏源码游戏源码渲染。静态景物如天空和草地通过导入和创建sprite实现,游戏源码游戏源码通过Sorting Layers和Order in Layer控制其渲染顺序。游戏源码游戏源码接口源码分析主角天鹅的游戏源码游戏源码动画和控制脚本也进行了详细配置,包括创建Sprite动画、游戏源码游戏源码切割和运动逻辑。游戏源码游戏源码
主角帽子的游戏源码游戏源码制作更为细致,通过创建HatBackSprite和HatFrontSprite,游戏源码游戏源码并调整Order in Layer来实现球落入帽子的游戏源码游戏源码直播源码商城遮挡效果。保龄球的游戏源码游戏源码碰撞检测和控制器脚本使用了FixedUpdate函数,以保证稳定的游戏源码游戏源码物理模拟。帽子的游戏源码游戏源码物理属性如刚体和重力也被设置,以适应游戏逻辑。
碰撞检测与2D物理阻挡的设置确保了保龄球与帽子的交互,同时在草地下方添加了碰撞体以增加游戏的物理维度。游戏特效,如保龄球击中和帽子接球后的火花效果,通过Effects预设体和粒子效果实现,为游戏增色。
源码和更详细的导航源码wordpress文档可以在pan.baidu.com/s/1dE4NTy...找到,本文由SGamble发布于Unity3D官方案例,提供了丰富的实践指导。
å¦ä½ä½¿ç¨Unity Studio
è¿éé¢ææ°ççæ¬æ¯v0.6.4ï¼æè°ç¨æ°ä¸ç¨æ§ï¼å°±ç¨è¿ä¸ªå°±å¯ä»¥äºãæ ¹æ®çµèç³»ç»ï¼å¯ä»¥èªè¡éæ©ä½æè ä½çzipå ï¼ä¸é¢çæ¯æºç ï¼è¿éåªæ¯è®²ä½¿ç¨ï¼å°±ä¸ä¸è½½äºã
æè¿ééæ©çæ¯ä½çï¼å°±ä»¥è¿ä¸ªä¸ºä¾ã
æ¾å°ä¸è½½çzipå ï¼è§£åå°æå®ä½ç½®ï¼æè¿éæ¯è§£åå°å½åæ件夹ä¸ã
æå¼è§£ååçæ件夹ï¼åå»Unity Studio.exe
ç¹å»èåfileä¸çLoad Folder...ï¼è½½å ¥unity游æçAssets->bin->dataæ件夹ï¼æ³¨æè¿ä¸ªæ¶ådataæ件夹çåæ件夹ä¸è½è·åç¦ç¹ï¼å¦åä¼ç»§ç»æå¼åæ件夹ãç¹å»æå¼ã
éæ©Assets Listï¼å¯ä»¥çå°éé¢æå¾å¤æ件
æ¥ä¸æ¥ç¹å»typeï¼åä¸ä¸æåºï¼å¦åç´æ¥æåèµæºï¼å¯è½ä¼æ¥éã
æåºä¹åï¼ä¼çå°æå¾å¤ç±»åï¼shaderï¼textAssetï¼è¿éæ们æ¾å°Texture2Dç±»åçï¼éæ©å ¶ä¸æ³è¦çã
ç¹å»èåå·¥å ·æ éçExport->Selected Assetsï¼ç¹å»ç¡®å®->ä¿åã
è¿æ ·ï¼ä¸ä¸ªå称为Texture2Dçæ件夹就æååºæ¥äºï¼éé¢æ¯æ们ååæååºæ¥çå¾çèµæºã
韩版传奇 2 源码分析与 Unity 重制(三)客户端渲染管线
专题介绍
本次专题将深入分析基于韩版传奇2的.NET重写源码,涵盖数据交互、状态管理以及客户端渲染等技术细节。同时,我们将分享将客户端部分移植到Unity并用现代编程语言重写服务端的全过程。
系列文章概览
系列文章包含以下内容:
- 韩版传奇2源码分析与Unity重制(一)服务端TCP状态管理
- 韩版传奇2源码分析与Unity重制(二)客户端启动与交互流程
- 韩版传奇2源码分析与Unity重制(三)客户端渲染管线
文章概览
本文将开始探讨传奇客户端的2D渲染管线,揭示早期美术资产设计与渲染流程的细节。
底层图形接口分析
传奇初期可能未考虑跨平台性或追求极致性能,直接采用Direct3D图形接口构建2D渲染管线。白城网站源码在加载主窗体时,初始化Direct3D,并通过DXManager封装RenderState管理。
渲染循环解析
客户端事件循环调用UpdateEnviroment和RenderEnvironment,前者处理网络数据包和状态更新,后者负责渲染。在RenderEnvironment中,首先清屏,开启Scene管理每一帧的DrawCall,设置透明度混合和渲染目标,提交Scene的litehtp源码分析DrawCall并通过EndScene提交命令缓冲,最后通过Present进行屏幕切换。
渲染目标设置
RenderTarget通过SetSurface方法绑定至目标纹理,传奇未使用多目标模式,输出通过RT0绑定的Attachment进行。在渲染循环中,RT0绑定至DXManager.MainSurface,即BackBuffer,实现渲染内容的直接屏幕显示。
渲染管线总结
传奇渲染管线简单,主要包括两步渲染:场景渲染和游戏内渲染。场景渲染通过MapControl.DrawControl实现,利用帧缓存ControlTexture复用渲染结果。游戏内渲染分为地图背景、地图前景和游戏对象的绘制。
游戏场景渲染步骤
游戏场景渲染包括地图背景绘制、地图前景和游戏对象的绘制。核心步骤为DrawFloor绘制地图背景、DrawObjects绘制地图前景和游戏内对象。最终视觉效果显示游戏场景的呈现。
Tilemap地图绘制
Direct3D9的Sprite坐标系原点在左上角,传奇采用Tilemap地图,按照从左至右、从上至下的顺序绘制。每个Tile固定大小为xpx,通过计算x和y轴方向所需的Tile数量,避免出现黑边加4作为半屏下Tile数量。
DrawFloor实现
DrawFloor实现中,通过双层循环以用户当前坐标为中心,计算minY和maxY,内层循环迭代minX至maxX,绘制Tile顺序为自上而下、从左到右。Tile坐标转换为屏幕坐标,通过乘以CellWH完成绘制。实际Tile分辨率为x,是CellWH的2倍,产生%覆盖以避免裂缝。
遮挡关系处理
DrawObjects逻辑顺序先绘制地图元素,后绘制人物,但人物能被地图元素遮挡。在先绘制Tile,后绘制Objects的顺序下,实际上人物被绘制得比同一行的Tile更早,通过美术资产上的Y方向向上偏移实现。
半透明身影渲染
在DrawObjects绘制结束后,开启AlphaBlend,对角色进行0.4的透明度混合,当角色完全被景物挡住时,渲染半透明身影以避免玩家看不到角色。
技能与特效渲染
场景中的技能和特效采用Additive混合方式,设置SourceAlpha One,避免地图上产生黑色背景。正确的Additive混合方式产生明亮的特效。
下一步分析
本文着重分析了传奇客户端基于Direct3D9构建的2D渲染管线及细节。后续文章将深入探讨客户端渲染,分析装备、技能和动画的渲染方式。