这是我参与「第五届青训营」伴学笔记创作活动的第16天。
一、本堂课重点内容
本节课的主要内容为:一名程序员,如何在没有美术的前提下,制作一个游戏Demo, 让别人亲身体验以了解游戏机制。
二、详细知识点介绍
1、3D实体搭建
3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。
- 位置Position (x, y, z), 是一个三维向量坐标
- 旋转Rotation (x, y, z), 是一个三维向量坐标
- 缩放Scale (x, y, z),是一个三维向量坐标
敌机模型制作
2、相机,光照,天空盒
相机搭建
- Clear Flag
- 背景颜色
- Culling Mask
- 投影(透视、正交)
光照设置
- 类型:点光源、平行光、聚光灯、面积光
- 颜色
- 强度
- 阴影类型
天空盒
- 相机的清除标志设为"天空盒”
- 窗口-渲染照明设置。
- 环境天空盒材质。
3、控制与碰撞
为主角飞船添加控制逻辑
- 添加刚体组件。
- Add Component > Physics > Rigidbody.
- Use Gravity设置为false,忽略重力的影响。
- isKinematic设置为true,飞船通过脚本而非力影响运动属性。
- 设置Constraints ,冻结Z轴位移以及X、Y、Z轴旋转。
- 添加自定义脚本。
- 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.主经培权亚林三制式
三、引用参考
掘金、知乎