这是我参与「第五届青训营 」伴学笔记创作活动的第 18 天
控制和碰撞
初始化-物理-输入-游戏逻辑-渲染-停顿-销毁
为主教飞船添加控制逻辑
- 添加刚体组件
- Add Component>Physics>Rigidbody
- Use Gravity设置为false,忽略重力的影响
- isKinematic设置为true,飞船通过脚本而非力影响运动属性
- 设置Constraints,冻结Z轴位移以及X、Y、Z轴旋转
- 添加自定义脚本
- Add Component>New Script
MonoBehaviour是一个基类,所有Unity脚本都派生自该类
- Start():在首次调用任何Update()方法之前在帧上调用start
- Update():每帧2调用Update
- FixedUpdate():用于物理计算且独立于帧率。具有物理系统的帧率;每个固定帧率帧调用该函数
- LateUpdate():在每一次调用Update函数后调用
- OnGUI():系统调用OnGUI来渲染和处理GUI事件。OnGUI实现可以每帧调用多次(每个事件调用一次)
- OnDisable():该函数在对象被禁用时调用。对象销毁时也会调用该函数
- OnEnable():该函数在对象变为启用和激活状态时调用
Input GetAxis()和输入管理器
- InputManager是Unity设置输入响应方式的管理列表,它在位置在Edit>Project Setting>Input中
添加敌机
- 为每架敌机预制体添加一个刚体
- 选中敌机预制体,在菜单栏执行Component>Physics>Rigidbody
- 在新添加的刚体组件中,将Use Gravity设置为false
- 将isKinematic设置为true
- 打开Constrains旁边的三角形展开按钮,冻结Z轴的坐标和XYZ轴的旋转
- 建立敌机的脚本Enemey.cs
- 为每架敌机预制体均添加脚本Enemy.cs
随机生成敌机
- 新建一个名为Main的C#脚本,绑定到Main Camera上
设置标签、图层和物理规则
游戏中存在不同类型的游戏对象,它们需要放置在不同的图层中,并与其他游戏对象发生不同的交互
- 主角飞船:会与敌机、敌机炮弹、升级道具碰撞,但不会与主角飞船的炮弹相碰撞
- 主角飞船的炮弹:与敌机、敌机的炮弹相碰撞
- 敌机:与主角飞船和主角飞船的炮弹相碰撞
- 敌机的炮弹:只与主角飞船相碰撞
- 升级道具:只与主角飞船相碰撞
标签和图层管理器
- 菜单栏中执行Edit>Project Settings>Tag and Layers命令
- 打开Tags左侧的三角形展开按钮,单击标签下方的+符号并输入标签名称
- 单击Layers旁边的三角形展开按钮从User Layer 8开始,依次输入图层名称