[ 3D游戏实战开发 | 青训营笔记 ]

122 阅读2分钟

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

一、本堂课重点内容

本节课的主要内容为:一名程序员,如何在没有美术的前提下,制作一个游戏Demo, 让别人亲身体验以了解游戏机制。

二、详细知识点介绍

1、3D实体搭建

3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。

image.png

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

敌机模型制作

image.png

2、相机,光照,天空盒

相机搭建

  1. Clear Flag
  2. 背景颜色
  3. Culling Mask
  4. 投影(透视、正交)

光照设置

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

天空盒

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

3、控制与碰撞

image.png

为主角飞船添加控制逻辑

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

4、玩法逻辑与UI

主角飞船增加射击功能

新建一个新的预制体,命名为ProjectileHero。模型为一个立方体,Position与Rotation 均为[0,0,0],Scale为[0.25,1,0.5]。 保留默认的Box Collider。Box Collider的Size.z设置 为10. 创建个名为Mat_ Projectile 的新材质,将着色器指定为ProtoTools > UnlitAlpha, 并 将新材质应用到ProjectileHero上。

  • 为ProjectileHero游戏对象添加一个新的刚体组件,设置如下:
  • Use Gravity为false,isKinematic为false
  • Collision Detection为Continuous
  • Constraints冻结Z坐标与X、Y、Z旋转轴
  • Tag和Layer均设置为ProjectileHero.主经培权亚林三制式

三、引用参考

掘金、知乎