| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 随便看看官方教程-FPS Microgame -> 正文阅读 |
|
[游戏开发]随便看看官方教程-FPS Microgame |
0x00Unity 推出的一套免费教程,看了以后我差点就以为我能做游戏了!传送门!!! 这个教程属于非常基础的给入门的小朋友学习的工程,虽然流程很短,项目也很小巧,但贵在完整。 0x01天空盒 「Window」-「Rendering」-「Lighting Settings」中,设置场景中显示的天空盒。 可以在这个网站上下载,自己做成材质放进来。 其实我是来学习目录结构的! 在这个项目中,使用的嵌套 prefab,将一个实体拆分得足够细致,基本的原则是将脚本挂载在根节点上,模型的结构在子对象中体现出来,而一些标记模型位置的空对象与模型子对象同级。 不仅如此,使用了嵌套 prefab 就可以将很多比如粒子系统制成 prefab 嵌套在不同的 prefab 对象中去。 prefab 变体(prefab variant)是用来通过现有的 prefab 创建的变种,可以简单的理解为对覆写的 prefab 进行了保存,因此在编辑 prefab 变体时的规则与在 Hierarchy 中操作 prefab 实例相同,可以修改参数添加子对象,但不能删除修改 prefab 中对象的结构。 工程中还使用了 proGrids 和 Navigation,教程中都有比较详细的使用方法。proGrids 可以更加方便地放置 GameObject,构成关卡;Navigation 来生成简单的寻路系统,甚至也可以自定义路径类型,让 AI 与其进行交互。 0x02debug 的方式,使用一个单独的 debugHandler 脚本来在需要报错的地方处理报错,函数体内使用 UNITY_EDITOR 来判断是否执行,这样在发布的包中对性能的影响是一次空函数的调用。
玩家角色 prefab 的结构如下: 玩家控制的角色脚本入口为 PlayerCharacterController.cs 组件,保存角色行为的主循环
Horizontal 和 Vertical 是对移动进行的配置,可以看到此处是对 left 和 right 按键进行的配置,同样还有同名的配置是针对 a 和 d 按键。 工程中为了将此配置与逻辑分离,专门使用了 GameConstants.cs 对字符串常量进行定义。 为了对操作进行统一控制,在游戏中对“鼠标指针的锁定状态”和“游戏状态”求与获得控制变量。
定义了血量相关的属性与方法,提供了 3 个事件,分别在受伤,治疗和死亡时可以触发。可以设置伤势严重程度,用来在 UI 进行表现。 使用了一个 UnityAction 的泛型类来处理事件,是在 UnityEngine.Events 中定义的。 相应的方法,可以在被挂载的实体控制器中使用。
WeaponCamera 仅用来显示第一视角的武器,将摄像机的 Clear Flags 设置为 Depth only 表示不,并将 Culling Mask 设置到 FirstPersonWeapon 层,即为武器所对应的层级。这样,由于 WeaponCamera 只显示武器相关,避免了在武器穿模时被遮挡的情况。 所有武器通过 WeaponController.cs 组件完成,在 PlayerWeaponsManager.cs 中也通过此组件进行管理,并且所有枪械的位置动画都是通过计算,在每一帧最后更新到武器的根节点予以表现。
这是给玩家提供的特殊能力,可以在跳跃后进行空中移动。
m_CanUseJetpack 是通过姿态位置和按键来判断是否可以触发技能;isJetpackUnlocked 是技能是否以解锁的控制量;currentFillRatio > 0f 是判断燃料是否用尽;最后判断是否保持跳跃键按下。 而正常技能解锁时,会通过 UI 来提示玩家,或显示相应的技能画面,
是 Unity 提供的角色控制器,在 PlayerCharacterController 用来控制角色移动。
用来描述敌对关系,主要在 AI 逻辑与决策中使用。
会取得绑定在同一对象上的 Health.cs 组件,在调用其 InflictDamage() 方法时,对指定 Health.cs 对象造成伤害。
武器的逻辑代码挂载在根节点上,子节点分别是模型结构,以及用来指示位置的 GameObject。
武器的主控制器,对武器的类型、属性进行配置,如准星类型,武器发射是自动还是需要蓄力等。同时武器还需要发射时的火光,以及射出的枪弹,这些都是通过制成不同的 prefab 得到的。 不同于实际的战争游戏中武器换弹的设计,这个 demo 中的枪械采用的子弹打光之后需要进行“冷却”。而下面两个脚本就是实现了这种机制具体的表现效果。
枪弹通过两个脚本来进行定义,
提供 onShoot 事件,在 WeaponController.cs 中触发。
配置子弹的各种属性,一些特殊的属性,可以通过更多的脚本来提供,如范围伤害,使用 DamageArea.cs 脚本,蓄力攻击的效果等,使用 ProjectileChargeParameters.cs 脚本。
游戏中可可拾取物的配置主要是通过两个脚本实现的:
Pickup.cs 中对可拾取物的表现进行了配置。并提供了 onPick 事件,用来在物品被拾取时触发。
依赖 Pickup.cs 组件,定义了 xxx 拾取物被拾取后触发的功能。
组合了#@#¥%#54523@#¥…
主循环中设置游戏完成的条件,判断是否结束。
管理敌人实体的注册与移除,对场景中敌人进行统计。
对 Actor 进行控制。
任务管理器,提供了任务的注册和管理,对全部任务的完成进行检查。
只……保存了 Audio Mixer,可以后续定制。 0xff好啦,水完了!撒花! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 6:09:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |