这是我参与「第五届青训营 」伴学笔记创作活动的第 18 天
课程概要
3D实体搭建 相机,光照,天空盒 控制与碰撞 玩法逻辑与UI
一、3D实体搭建
(一)、由一个个实体组成
(二)、3D实体的位姿态(Transform)
1位置 Position (x,y,z),是一个三维向量坐标 2.旋转Rotation (x, y,2),是一个三维向量坐标 3.缩放Scale(x,y,z),是一个三维向量坐标
偏角 偏航角 侧滚 理解引擎3D坐标系(左右手)
缩放 旋转 平移
(三)、3D实体的创建
(四)、3D实体的绘制
材质 颜色 纹理
演示:
进阶需了解:法线贴图 高度图
(五)、敌机模型制作
(六)、预制体
•将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体(prefab)。 •预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有子游戏对象。
二、渲染氛围
相机 光站 天空盒 两种投影方式
(一)、相机
- Clear Flag.
- 省景颜色。
- Culling Mask.
4.投影(透视,正交)
(二)、两种投影方式
透视投影 透视:近大远小 视椎体开阔程度 正交投影 近平面 远平面的距离 尺寸
(三)、光照
- 类型:点光源、平行光、 聚光灯、面积光 2.颜色。
- 强度。 4.阴影类型。
(四)天空盒
1.相机的清除标志设为“天空盒”。
2.窗口-渲染- 照明设置。
3. 环境-天空盒材质。
三、控制与碰撞
(一)、为主角飞船添加控制逻辑
(二)、添加敌机
- 为每架教机预制体添加一个刚体。
- 选中教机预制体,在菜单栏执行 Component > Physics > Rigidbody
- 在新添加的刚休组件中,将Use Gravity 设置为 false。
- 格iskinematic设置为 true.
- 打开 Constraints 旁边的三角形展开按钮。冻结z轴的坐标和XYz轴的旋转。
--
-
建立敌机的脚本Enemey.cs
-
为每架教机预制体均添加脚本 Enemy.cs.
(三)、设置标签、图层和物力规则
游戏中存在不同类型的游戏对象,它们需要放置在不同的圈层中,并与其他游戏对系发生不同的交互。 •主角飞船 (Hero):会与敌机、,敌机炮强 升级道具碰撞。但不会与主角飞船的炮弹相碰 撞. •主角飞船的炮弹 (ProjectileHerp):与政机、敌机的旭弹相雄撞。 •教机 (Enemy):与主角飞船和主角飞船的炮弹相碰撞。 •敌机的炮弹 (ProjectileEnemy):只与主角飞船相碰撞。 •升级道具 (PowerUp):只与主角飞船相碰撞。
标签和图层管理器
(四)、物理管理器
(五)、为游戏对象制定合适的图层
(六)、敌机碰撞主角飞船
添加碰撞代码
四、玩法逻辑和UI
(一)、主角飞船增加射击功能
(二)、按下空格后实例化新炮弹
(三)、为子弹添加碰撞事件
(四)、屏幕右上角显示计分板
(五)、每次消灭敌机为玩家增加50分
五、知识点总结
- 学习在Unity中创建实体,给实休设置位姿、材质、刚体、脚本。
- 学会配置相机、光、天空盒。
- 理解实时游戏update的时序机制。
- 通过inputGetAxis0与inputManager监听玩家論入。
- 用instantiate0动态生成游戏实体实例。
- 以Camera.main获得相机 参数,设置场泉中的物体在画面中的位置。
- 利居益、国层管理開区分实休神美升设置物理號则。
- 通过 Collider 组件与 OnTrigger 函数添加碰撞事件。
- 通过图形用户界面 (GUI) 管理游戏界面。