3D游戏开发实战 — 青训营笔记

133 阅读3分钟

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

课程概要

3D实体搭建 相机,光照,天空盒 控制与碰撞 玩法逻辑与UI

一、3D实体搭建

(一)、由一个个实体组成

3dfe3d5e1daf872dd71e50ce2e6a75e.png

(二)、3D实体的位姿态(Transform)

1位置 Position (x,y,z),是一个三维向量坐标 2.旋转Rotation (x, y,2),是一个三维向量坐标 3.缩放Scale(x,y,z),是一个三维向量坐标

3fb474328be7485c653422d3f33fedd.png

偏角 偏航角 侧滚 理解引擎3D坐标系(左右手)

缩放 旋转 平移

(三)、3D实体的创建

0952ba222c8a9dd16b34101dff9d9ea.png

(四)、3D实体的绘制

材质 颜色 纹理

9ff1b59076bde02671a6a53c2140fa6.png

演示:

d23ab2254da0ed26c90b1ee593d11de.png

05da822f6cb618291a3fd0e0d63045d.png

进阶需了解:法线贴图 高度图

(五)、敌机模型制作

984ca22e9d486b786a0ca9b8cb39864.png

(六)、预制体

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

4c3a3fd857c8a428bc05f65a34d309a.png

二、渲染氛围

相机 光站 天空盒 两种投影方式

(一)、相机

  1. Clear Flag.
  2. 省景颜色。
  3. Culling Mask. 4.投影(透视,正交) fe3f35e74100c2259144c93b0ddba5e.png

(二)、两种投影方式

透视投影 透视:近大远小 视椎体开阔程度 正交投影 近平面 远平面的距离 尺寸

e01addfab31211bb620fc5b91411bb7.png

(三)、光照

  1. 类型:点光源、平行光、 聚光灯、面积光 2.颜色。
  2. 强度。 4.阴影类型。

dfcce478033f26fbb2ab80405a2f488.png

(四)天空盒

1.相机的清除标志设为“天空盒”。 2.窗口-渲染- 照明设置。 3. 环境-天空盒材质。 f595c80d5fb97485b6473d9e573f93c.png

三、控制与碰撞

050f81ab56df8a65dad908f177d8d4b.png

(一)、为主角飞船添加控制逻辑

8ba789342445e491514938053e09eee.png

f53be81c31ef3de87bce8cb506705f7.png

edd896fd8a00d19820e76980b6818a6.png

bf49595e6eb90e3f674a58d885c3723.png

(二)、添加敌机

  • 为每架教机预制体添加一个刚体。
  • 选中教机预制体,在菜单栏执行 Component > Physics > Rigidbody
  • 在新添加的刚休组件中,将Use Gravity 设置为 false。
  • 格iskinematic设置为 true.
  • 打开 Constraints 旁边的三角形展开按钮。冻结z轴的坐标和XYz轴的旋转。

--

  • 建立敌机的脚本Enemey.cs 4e1fde4987361c98ce620713a937cb7.png

  • 为每架教机预制体均添加脚本 Enemy.cs.

ae249d32292e523567bf773aba2571f.png

6d80835e127804fc8b969a2dc165244.png

(三)、设置标签、图层和物力规则

游戏中存在不同类型的游戏对象,它们需要放置在不同的圈层中,并与其他游戏对系发生不同的交互。 •主角飞船 (Hero):会与敌机、,敌机炮强 升级道具碰撞。但不会与主角飞船的炮弹相碰 撞. •主角飞船的炮弹 (ProjectileHerp):与政机、敌机的旭弹相雄撞。 •教机 (Enemy):与主角飞船和主角飞船的炮弹相碰撞。 •敌机的炮弹 (ProjectileEnemy):只与主角飞船相碰撞。 •升级道具 (PowerUp):只与主角飞船相碰撞。

61c1ce4961a2bfed9c21a766673871c.png

标签和图层管理器

538555a79566f54c7d26014d3caf727.png

(四)、物理管理器

04ea844b662e63248e4660711b27e45.png

(五)、为游戏对象制定合适的图层

b45c41a50877c1d502c1b5030310b1e.png

(六)、敌机碰撞主角飞船

fd1d57e2ed2e651e9abc51f0f0495d5.png

添加碰撞代码

35d608914b72c9009ff6bd39bae3c21.png

四、玩法逻辑和UI

(一)、主角飞船增加射击功能

4136592970a5635c4d48e2b507b522d.png

(二)、按下空格后实例化新炮弹

4c08e5e8c5819869d9d883f10ba1443.png

(三)、为子弹添加碰撞事件

7b3e1ffa23f3165ffc322babe75a018.png

(四)、屏幕右上角显示计分板

e372058361e9fbfba72aae190762d0b.png

(五)、每次消灭敌机为玩家增加50分

7d8e327f49272d6e21d82c73b35abd6.png

五、知识点总结

  1. 学习在Unity中创建实体,给实休设置位姿、材质、刚体、脚本。
  2. 学会配置相机、光、天空盒。
  3. 理解实时游戏update的时序机制。
  4. 通过inputGetAxis0与inputManager监听玩家論入。
  5. 用instantiate0动态生成游戏实体实例。
  6. 以Camera.main获得相机 参数,设置场泉中的物体在画面中的位置。
  7. 利居益、国层管理開区分实休神美升设置物理號则。
  8. 通过 Collider 组件与 OnTrigger 函数添加碰撞事件。
  9. 通过图形用户界面 (GUI) 管理游戏界面。