3D游戏开发-2|青训营

107 阅读1分钟

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

添加玩家

添加控制逻辑

  • 添加刚体组件
    • Add Componets > Physics > Rigidbody
    • 设置 Use Gravity 为 false,忽略重力影响
    • 设置 isKinematic 为true(设置飞船的运动属性通过脚本影响,如果此项为false则飞船的运动属性受到合力影响)
    • 设置Constraints,设置飞船只能做x,z轴的平移(冻结x,y,z的转动和z轴的平动)
  • 添加自定义脚本(设置飞船的动态表现)
    • Add Components > New Script

MonoBehaviour

是一个基类,所有的Unity脚本都派生自此类 image.png

补充

  • FixedUpdate() 与Update()跟着时间走不同,而它是跟着逻辑秩序走的。运行时间独立于帧率
  • LateUpdate() 用来控制脚本运行的时序

image.png Input.GetAxis()可以获得对象的当前位移,.deltaTime可以获得上一帧到当前帧过去的时间

Input.GetAxis()和输入管理器(InputManager)

InputManager是 Unity设置相应方式的管理列表,位置在Edit > Project > Setting > Input中,脚本里设置的值都是从InputManager里取

敌机

添加敌机

  • 为每个敌机预制体添加一个刚体(与之前的方法一样)
  • 建立敌机的脚本Enemy.ts
  • 为每架敌机添加脚本 image.png 与玩家控制的飞机不同的是,敌机需要通过AI而不是键盘输入控制飞船

随机生成敌机

设置敌机管理器:新建一个名为Main的C#脚本,绑定到Main Camera上 image.png 该脚本获取了游戏的camWidth和camHeight,并且使用单例管理Main,并且设置敌机距离地图左右边界的位置和每秒产生敌机的数量,使用Invoke触发生成敌机的事件