前端与3D游戏实战开发|青训营笔记

73 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 17

3D实体的位姿态

位置Position(x,y,z),是一个三维向量坐标

旋转Rotation(x,y,z),是一个三维向量坐标

缩放Scale(x,y,z),是一个三维向量坐标

在Unity中,绝大部分情况下是先缩放再旋转再平移

3D实体的创建

通过加载3D模型创建,通过组合参数化的基本几何体创建

3D实体的绘制

材质、颜色、纹理

预制体

将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体。预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有子游戏对象

相机

Clear Flag、背景颜色、Culling Mask、投影

光照

类型:点光源、平行光、聚光灯、面积光;颜色;强度;阴影类型

天空盒

相机的清除标志设为“天空盒”;窗口-渲染-照明设置;环境-天空盒材质

为主角飞船添加控制逻辑

添加刚体组件:Add Component > Physics > Rigidbody;Use Gravity设置为false,忽略重力的影响;isKinematic设置为true,飞船通过脚本而非力影响运动属性;设置Constraints,冻结Z轴位移以及X,Y,Z轴旋转

添加自定义脚本:Add Component > New Script

MonoBehaviour是一个基类,所有Unity脚本都派生自该类

Input.GetAxis()和输入管理器(InputManager)

InputManager是Unity设置输入相应方式的管理列表,它的位置在Edit > Project Setting > Input中

添加敌机

为每架敌机预制体添加一个刚体:选中敌机预制体,在菜单栏执行Component > Physics > Rigidbody;在新添加的刚体组件中,将Use Gravity设置为false;将isKinematic设置为true;打开Constraints旁边的三角形展开按钮,冻结Z轴的坐标和XYZ轴的旋转

建立敌机的脚本Enemey.ts

为每架敌机预制体均添加脚本Enemy.ts

随机生成敌机

新建一个名为Main的C#脚本,绑定到Main Camera上

添加碰撞代码

在Hero类中添加OnTriggerEnter函数