这是我参加[第五届青训营]伴学笔记创作活动的第16天
本堂课重要知识
课程目标:通过此次培训,同学们可以利用Unity(或其他3D游戏引擎)快速搭建电子 游戏原型,参加GameJam活动。电子游戏原型可以帮你完成下面的工作:
- 快速试验、否定或修改游戏机制与规划。
- 探索游戏的动态行为,理解由规则产生的可能结果。
- 确保规则和游戏元素易于被玩家理解。
- 了解玩家对游戏的情绪反应。
step1:3D实体搭建-在游戏场景中搭建静态物体
静态物体包括但不限于:3D实体,变换组件,简单材质,预制体
3D实体的位姿态(Transform)
1.位置Position(x,y,z),是一个三维向量坐标
2.旋转Rotation(x,y,z),是一个三维向量坐标
3.缩放Scale(x,y,z),是一个三维向量坐标
在Unity中,绝大部分情况下,是先缩放,后旋转,最后平移。还需要考虑左右手坐标系的问题
3D实体的创建过程
1.创建实体
- 通过加载3D模型创建,如fbx、gltf、obj。
- 通过组合参数化的基本几何体创建。
2.绘制实体
需要绘制该实体的材质(金属度和光滑度)、颜色和纹理
3.敌机模型制作(以太空大战为例子)
预制体
- 将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体(prefab)。
- 预制体存储着一个游戏对象,包括游戏对象的所有组件以及其其下的所有子游戏对象
step2:相机,光照,天空盒-营造游戏场景中的氛围感。
相机实体
从三维到二维的降级操作,涉及到的属性由Clear Flag、backgroud背景颜色、Culling Mask、projection投影(透视、正交)
光照
1.类型:点光源、平行光、聚光灯、面积光。
光源颜色、光强度、阴影类型(软阴影、硬阴影,无阴影)。
天空盒(图片素材)
1.相机的清除标志设为"天空盒"。 2.窗口-渲染-照明设置。 3.环境-天空盒材质。
step3:控制与碰撞-让实体在游戏场景中动起来。
实时游戏时序、输入管理器、碰撞盒、标签与层级
实时游戏时序
停顿是为了整个画面的连贯性,1帧内容过短,那么当1秒是10帧会有卡顿感,但40或60的话就会相对流畅。
其他具体的可以查看图片中unity官网的文档解释
为主角飞船添加控制逻辑
1.添加刚体组件。
Add Component > Physics > Rigidbody。
UseGravity设置为false,忽略重力的影响。
isKinematic设置为true,飞船通过脚本而非力影响运动属性生。
设置Constraints,冻结Z轴位移以及X、Y、Z轴旋转。
2.添加自定义脚本。
Add Component > New Script
Input.GetAxis()和输入管理器(InputManager)
InputManager是Unity设置输入响应方式的管理列表,它的位置在Edit > Project Setting > Input中。
添加敌机
- 为每架敌机预制体添加一个刚体。
- 选中敌机预制体,在菜单栏执行Component>Physics>Rigidbody
- 在新添加的刚体组件中,将UseGravity设置为false。
- 将isKinematic设置为true。
- 打开Constraints旁边的三角形展开按钮,冻结Z轴的坐标和XYZ轴的旋转。
- 建立敌机的脚本Enemey.cs。
- 为每架敌机预制体均添加脚本Enemy.cs。
设置标签、图层和物理规则
游戏中存在不同类型的游戏对象,它们需要放置在不同的图层中,并与其他游戏对象发生不同的交互。
step4:玩法逻辑与UI-为游戏注入玩法与规则的灵魂。
实例化预置体、UI实体、场景周期控制
在案例游戏中比如主角飞船增加射击攻击、按下空格后实例化新炮弹、为子弹添加碰撞事件、屏幕右上角显示计分板、每次消灭敌机为玩家增加分数、重新开始游戏等等