3D游戏开发步步高系列课程(3)背景和物体导入付仲恺微软特邀开发专家我们将涉及到…•学习3D游戏‘PucthePirate’的开发议题•游戏层级•背景•摄像机•导入3D物体–游戏棋盘(Grid)–添加英雄•英雄的行为控制基础知识•基本计算机知识•基本软件开发(C#)知识Level200Level200议题•游戏层级•背景•摄像机•导入3D物体–游戏棋盘(Grid)–添加英雄•英雄的行为控制什么是层级?•层级是指在同一个游戏阶段中包含其他物体的对象•层级包含不同的类型–Playable层级–Introductory层级–Menu层级•一个游戏由一个或者多个层级组成层级之间的关系•继承关系–在基类实现公共方法•抽象类定义公共方法–在派生类实现层级特有方法•有利于提高代码复用–资源分配–逻辑功能–用户交互添加各个游戏层级议题•游戏层级•背景•摄像机•导入3D物体–游戏棋盘(Grid)–添加英雄•英雄的行为控制什么是背景?•背景是“预转换”图片,它在所有其它物体之前被渲染–位于屏幕中所有其他物体的后面–不会受到摄像机位置的影响–不会影响游戏进行–目的完全用于美化场景如何绘制背景•必要步骤–创建并且分配顶点缓冲区来保存顶点信息•VertexBuffer对象–顶点缓冲区必须包含4个顶点–使用适当的信息来填充缓冲区•位置,纹理坐标–创建纹理并且加载保存在其中的图片•这样将能够在游戏中看到背景图片•场景渲染必须在设备调用的BeginScene和EndScene之间完成添加游戏背景议题•游戏层级•背景•摄像机•导入3D物体–游戏棋盘(Grid)–添加英雄•英雄的行为控制什么是摄像机?•摄像机系统决定了玩家如何观看3D物体•在物体被转换到摄像机空间后,生成视图平截锥体•在Counter-Strike中,使用第一人称摄像机•在TombRaider中,使用第三人称摄像机•在PucthePirate中,使用球形摄像机•ManagedDirectX为开发者提供了多种摄像机类型的封装–FirstPersonCamera第一人称摄像机–ModelViewerCamera球形摄像机球形摄像机(1)•球形摄像机总是指向同一个点,或者观看同一个位置,但是它能够在球面上围绕着物体自由移动球形摄像机(2)•摄像机距离–玩家使用鼠标滚轮来缩放摄像机–通过增加或者减小摄像机所运动的球体半径,我们能够改变从摄像机到物体的距离球形摄像机(3)•摄像机距离球形摄像机(4)•在2D平面上,如何移动鼠标来在3D的空间中移动摄像机?•使用球面坐标系•在这个系统中,3D空间中的任何点都可以表示为两个角度和一个从原点到该点的距离•考虑角度α用于表示经线或者水平角度•考虑角度β用于表示纬线或者垂直角度球形摄像机(5)•球面坐标系系统–下面的图片阐明了其数学概念球形摄像机(6)•通过点击和水平地拖动鼠标的按键,可以相应地改变α角的数值,使得摄像机可以绕着球面的一侧旋转球形摄像机(7)•通过点击和垂直地拖动鼠标的按键,可以相应地改变β角的数值,使得摄像机可以绕着球面垂直地旋转球形摄像机(8)•为了实现从球面坐标系系统到笛卡尔坐标系系统的变换,我们可以应用下面的等式:–x=t*sin(β)*sin(α)–y=t*cos(β)–z=t*sin(β)*cos(α)DirectX摄像机设置•设置视图参数–SetViewParameters(Vector3eyePt,Vector3lookAtPt)–eyePt眼睛所在向量–lookAtPt视线所对准的向量DirectX摄像机设置•设置投影参数–SetProjectionParameters(floatfov,floataspect,floatnear,floatfar)–fov视域角–aspect宽高比–near近裁剪面(Z值)–far远裁剪面(Z值)添加摄像机议题•游戏层级•背景•摄像机•导入3D物体–游戏棋盘(Grid)–添加英雄•英雄的行为控制导入3D物体•.X文件格式•模型封装了导出的.X文件•3DStudioMax•Maya•在DirectX中作为mesh保存•对于动画模型•调用AddAnimation•对于静态模型•调用AddLoadMeshGrid•为什么要使用Grid•我们的游戏是基于棋盘的•通过gird上的结点来实现碰撞处理•我们需要结点来用于路径查找•我们可以在grid上放置cookie•必要的操作•构造并且初始化结点•约束移动的逻辑更多Grid信息•静态物体,继承自GameObject•Grid.X模型文件中包含着Grid的模型信息–形状,纹理和材质导入Grid英雄•游戏中玩家操作的对象•任务–收集cookie–躲避敌人–在收集到所有的cookie后从逃生门离开•动态动画物体•动态物体,继承自GameObject•PlayerAnimation.X模型文件中包含着英雄的模型信息–形状,纹理,材质和关键祯导入英雄议题•游戏层级•背景•摄像机•导入3D物体–游戏棋盘(Grid)–添加英雄•英雄的行为控制什么是行为?•行为控制着游戏物体对于任何事件响应应该如何去动作•行为通常是基于状态的•简单行为一般来讲总是相同•对于游戏物体通常使用回调函数来完成•有时玩家可以制定行为添加英雄的行为控制课程总结•游戏层级•背景•摄像机•导入3D物体–游戏棋盘(Grid)–添加英雄•英雄的行为控制获取更多MSDN资源•MSDN中文网站•MSDN中文网络广播•MSDNFlash•MSDN开发中心如需提出问题,请单击“提问”按钮并在随后显示的浮动面板中输入问题内容。一旦完成问题输入后,请单击“提问”按钮。