3D游戏开发(二) | 青训营笔记

105 阅读2分钟

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

控制和碰撞

初始化-物理-输入-游戏逻辑-渲染-停顿-销毁

为主教飞船添加控制逻辑

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

MonoBehaviour是一个基类,所有Unity脚本都派生自该类

  • Start():在首次调用任何Update()方法之前在帧上调用start
  • Update():每帧2调用Update
  • FixedUpdate():用于物理计算且独立于帧率。具有物理系统的帧率;每个固定帧率帧调用该函数
  • LateUpdate():在每一次调用Update函数后调用
  • OnGUI():系统调用OnGUI来渲染和处理GUI事件。OnGUI实现可以每帧调用多次(每个事件调用一次)
  • OnDisable():该函数在对象被禁用时调用。对象销毁时也会调用该函数
  • OnEnable():该函数在对象变为启用和激活状态时调用

image.png

Input GetAxis()和输入管理器

  • InputManager是Unity设置输入响应方式的管理列表,它在位置在Edit>Project Setting>Input中

image.png

添加敌机

  • 为每架敌机预制体添加一个刚体
  1. 选中敌机预制体,在菜单栏执行Component>Physics>Rigidbody
  2. 在新添加的刚体组件中,将Use Gravity设置为false
  3. 将isKinematic设置为true
  4. 打开Constrains旁边的三角形展开按钮,冻结Z轴的坐标和XYZ轴的旋转
  • 建立敌机的脚本Enemey.cs
  • 为每架敌机预制体均添加脚本Enemy.cs

随机生成敌机

  • 新建一个名为Main的C#脚本,绑定到Main Camera上

image.png

设置标签、图层和物理规则

游戏中存在不同类型的游戏对象,它们需要放置在不同的图层中,并与其他游戏对象发生不同的交互

  • 主角飞船:会与敌机、敌机炮弹、升级道具碰撞,但不会与主角飞船的炮弹相碰撞
  • 主角飞船的炮弹:与敌机、敌机的炮弹相碰撞
  • 敌机:与主角飞船和主角飞船的炮弹相碰撞
  • 敌机的炮弹:只与主角飞船相碰撞
  • 升级道具:只与主角飞船相碰撞

标签和图层管理器

  1. 菜单栏中执行Edit>Project Settings>Tag and Layers命令
  2. 打开Tags左侧的三角形展开按钮,单击标签下方的+符号并输入标签名称
  3. 单击Layers旁边的三角形展开按钮从User Layer 8开始,依次输入图层名称