这是我参与[第五届青训营]伴学笔记创作活动的第6天。通过此次培训,同学们可以利用 Unity (或其他3D游戏引擎)快速搭建电子游戏原型,参加 Game Jam 活动。电子游戏原型可以帮你完成下面的工作:快速试验、否定或修改游戏机制与规划。探索游戏的动态行为,理解由规则产生的可能结果。确保规则和游戏元素易于被玩家理解。了解玩家对游戏的情绪反应。一名程序员,如何在没有美术的前提下,制作一个游戏Demo,让别人亲身体验以了解游戏机制。课堂上我们通过制作一款射击游戏来带领大家了解3D游戏制作的基础知识。3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。3D实体的创建通过加载3D模型创建,如 fbx、gltf、obj。通过组合参数化的基本几何体创建。3D实体的变换组件 位移变换:三维向量。你所用的游戏引擎是左手坐标系还是右手坐标系?旋转变换:俯仰角、偏航角、滚转角。实时游戏的运行帧帧率60可以流畅运行,帧率30差强人意,帧率20及以下会感受到明显卡帧率60意味着每一帧运行时间16.67毫秒一帧内,需要执行物理计算(含运动学与动力学计算、碰撞检测)、用户输入检测、游戏逻辑执行、渲染画面,如果时间还有富余,停顿到16.67毫秒。游戏中的实体有静态的实体,也有动态的实体。对于动态的实体,我们需要为其设置刚体属性、碰撞/触发属性或执行脚本。游戏的优化主要是减少物理、逻辑或渲染中的运算量。例如减少无意义的碰撞检测,用更少的计算量达到相同的执行目标,在用户感知不到差异的前提下尽可能裁剪渲染。刚体组件 RigidBody概念:刚体是指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。现实生活中,刚体受力后,运动状态会发生改变(牛顿第一定律);相互作用的两个物体之间的作用力和反作用力总是大小相等,方向相反(牛顿第三定律)。但是在 3D 游戏中,刚体的性质遵守游戏设定的规则而不是牛顿定律。例如悬浮在空中的踏板、空气墙、无论多大的力都推不动的石子、不受重力作用的裙子。