Skip to content

IronAngel 《铁骑黑天使》是一款支持多人联机的射击游戏,基于Unity开发,实机演示视频链接:https://www.bilibili.com/video/BV15cWreoE1i/

License

Notifications You must be signed in to change notification settings

CGandGameEngineLearner/IronAngel

Repository files navigation

铁骑黑天使

实机演示视频

铁骑黑天使13分钟实机玩法演示视频

介绍

铁骑黑天使是一个支持多人联机的2D俯视角射击游戏,拥有单人战役模式和多人模式。

本项目主要实现了以下功能:

  • 局域网多人联机
  • 角色Logic State Manager(角色逻辑状态与Buff管理系统),支持各种复杂逻辑状态容斥关系和Buff持续时间、Buff效果等内容的开发与配置。
  • 使用Token Pool(用于控制敌方AI攻击欲望的系统)、Logic State Manager(角色逻辑状态与Buff管理系统)、AI行为树等技术实现的游戏敌方AI
  • 丰富的战斗系统:拥有各种火箭炮、散弹枪、激光武器、手雷、炸弹等武器和道具。

快速启动项目

安装依赖

  • Unity 2022.3.2.9740
  • Github Desktop
  • Visual Studio Code 并安装插件以下插件:
C#
C# Dev Kit
IntelliCode for C# Dev Kit
C# XML Documentation Comments
(安装完以上C#相关插件后,使用插件自带的功能安装.Net8和.Net Framework4.7.1,不要跑网上乱下)
Unity
Markdown Preview Enhanced
PlantUML
PDF Preview
Bookmarks

启动!

双击open_unity.bat (在这之前,请把Unity的安装目录添加到Path环境变量下)

杂项说明

武器预制体

  • 武器预制体要把碰撞体的callback layer设置成nothing,不然会无法触发玩家护盾和护甲的碰撞

新场景的相机设置

  • Prefabs/Global文件夹下有CameraTarget,MainCamera,VirtualCamera三个相机相关的预制体,将三个预制体拖入场景(需要确保场景中这三种预制体实例有且仅有一个, 尤其注意主相机只能由一个,不然会抢夺最终画面渲染权),然后将CameraTarget拖给VirtualCameraCinemachineVirtualCamera组件下的Follow
  • 如果觉得相机的缓动移动太快的话,可以设置VirtualCameraCinemachineVirtualCamera组件下的Body下的X DampingY Damping,这两个参数是XY轴的移动缓动系数,目前设置为0
  • 相机的画面大小设置在VirtualCameraCinemachineVirtualCamera组件下Lens下的Ortho Size设置数值,目前数值为10

支持多重逻辑状态管理的LogicStateManager使用说明

假设你需要新增一个状态,名为PlayerMoving,当玩家正在位移时就会添加这个状态,玩家禁止时移除这个状态。 那么你需要找程序员在ELogicState中添加这个枚举,并且在LogicStatesSettings的列表LogicStateTemplates中添加这个状态的生成模板对象。 然后策划在Assets/Config目录中找到对应的配置,并且设置它。 状态设置

  • 其中,状态只会在满足LogicStateManager中有included列表中定义的状态,且没有exincluded列表中的状态时,才能存在。当AutoStateOut选项打勾时,如果运行时不满足这一容斥条件了,这个状态就会被自动移除,AutoStateOut未打勾时,不会自动退出。
  • 每个状态默认持续时间为无限时长,由程序员在逻辑中移除这个状态,如果状态存在的时间超过了这个设置,也会被自动移除。设置Duration时,输入inf并回车,会被自动补全为infinity,无限持续时长。

使用LogicState系统,可以很好地管理各种逻辑互斥问题,状态容斥问题、持续Buff问题、CD等待问题等等。

关于LogicState的更多说明

CSV转对话SO数据工具

1 2

  • 注意CSV文件的编写格式 3
  • 第一列是普通对话的语句,格式为语句内容/讲话者名字
  • 第一列使用选项字符标识这一行是上一个普通对话的选项,选项标识同一行的第二列是这个选项的文本,同一行第三列开始是这个选项之后的独有普通对话
  • 选项标识的下一行的普通对话表示选项独有对话结束后回到的主线对话内容
  • 暂时不支持选项里套选项的写法,不过可以在Unity里直接配实现 3
  • 注意CSV导出的格式是utf-8的CSV,同时保存的位置不要在C盘,会没有读取权限