Skip to content

alanyagger/Rust_Game

 
 

Repository files navigation

animation:全部的动画效果 configs:自定义参数 lib:全局变量声明 gui:状态ui、游戏封面、场景切换和ui、暂停、受击 resources:图片、纹理集、音乐资源加载 world:游戏大厅ui及互动、游戏房间

//开发日志

  1. defaultplugins的set函数不能连续分多次写add_plugins,要放在一起写成.set(). set()的格式;但是的.run_if不能合在一起写,得分成多个add_systems写!
  2. defaultplugins一定要放在app的最顶端,因为很多插件涉及defaultplugin的初始化,顺序错了会直接panic
  3. 状态切换需要:use:bevy::bevy_dev_tools和.add_systems(Update, log_transitions::)
  4. 删除对象只需调用Query<Entity, With>即可包括所有对象,然后: for parent in &mut menu_items_query { commands.entity(parent).despawn_recursive(); }即可删除对象 但需要注意:如果此时有函数然在调用被删除的对象,就会造成panic导致程序崩溃。 因此在定义函数和删除对象的时候注意通过状态切换来划分函数作用域
  5. 音乐问题已解决,原因一是音乐组件在defaultplugin中,之前重复初始化到panic了; 原因二是草丹的ogg文件损坏了!F!害的劳资花了一周半检查代码问题(0^0''') 还有就是bevy初始不支持wav文件,需要在toml中的feature注明才能使用(后续的tiff字体可能也有类似的问题,不过已经提前打开力(0v0))
  6. 一个文件中的plugin中的system的query查询不到另一个文件中的plugin产生的实体的 问题已解决,原因是要查询就必须在本文件中把查询中提到的component通过use的方式从产生实体的文件中调用过来,不能单纯在本文件中吧component复制一遍。
  7. 解决了摄像头跟随问题,后续可以增加摄像头随角色的碰撞检测限位(已增加)。
  8. 搞定了枪和角色关于鼠标位置翻转坐标轴手感不好的问题,同时添加了射击音效。
  9. 优化了枪口焰设计,为大厅添加了动画(bevy没有可视化编辑平台真是太shit了,坐标调参简直就是噩梦o(╥﹏╥)o)(P.S.听说了tiled的大名,后续的地图规划感觉有救了(〃'▽'〃))
  10. 优化射击手感,增加射击时准心放大和镜头变化,增加大厅事件,解决了帧率限制问题
  11. 新加了tiled库,可以在tiled软件上编辑地图了,到时候直接在文件中加入tiled的plugin然后导入相关实体(P.S.crates.io上本来叫bevy_tiled的库的,但是但是下载的时候发现版本才0.0.1,显然不对劲(ΩДΩ)仔细看了人家的repo才发现貌似是crates.io抽大风后续的更新不让再用这个名字了,笑死。为了继续上传,人家特地把“bevy_”这个前缀给去了,666)
  12. 摆了,tiled库不适配bevy,整了一天不知道怎么获取tile数据,换个bevy_ecs_tilemap试试
  13. 目前阶段地图可以只通过bevy_ecs_tiled加载,bevy_ecs_tilemap暂时保留,tiled库可以删了,与bevy真不适配(追:这个碰撞检测是真他奶奶的找不到,原文只说了如何建立碰撞体,却闭口不提怎么检测碰撞事件꒰╬•᷅д•᷄╬꒱)
  14. 尝试添加了跳跃逻辑框架,暂时定义为检测离地板高度,后续可以替换为碰撞检测
  15. 优化了纹理集加载,将加载放入resource中,借此实现了多个角色切换,也顺带解决了动画切换时会出现闪现的问题,尝试地图的碰撞检测中
  16. collider部件的碰撞检测满足条件很迷,目前发现能改变坐标的collider与fixed的collider并不能产生碰撞检测事件
  17. 完成了Enemy的生成和运动逻辑,实现了enemy可以在发现主角(在主角一定范围内)后自动寻找主角发起攻击,同时在主角一定范围外能够随机向一个方向巡逻一段时间并停留一段时间,之后向另一个方向巡逻。
  18. 经过好几天的努力,终于解决了横向碰撞会误以为下降的问题(^▽^),优化了射击手感,增加了敌方子弹的生成机制,制作了跟踪导弹和普通导弹,完成了子弹的动画。
  19. 将所有敌人相关的资源(子弹,动画等)整合入了一个资源包GlobalEnemyTextureAtlas,删除了部分用不到的库。
  20. 增加了一种新的敌人。
  21. 完成了Boss的生成与动画(冲撞技能的特效还没实现)
  22. 实现了角色的闪避,文本效果,角色的受伤联动
  23. 实现了boss的运动逻辑(半血以上),完善了敌人的受击受伤(死亡动画未制作)
  24. 完善了boss的运动逻辑(boss子弹还未生成)和组件动画、翻转动画等,完成了boss和敌人的死亡动画。
  25. 完成了boss除血条、子弹和对玩家造成伤害的其他机制,完成了近战小怪对玩家的伤害。
  26. 完成了地图的切换逻辑,找到了tiled地图的尺寸信息从而准确定位小怪坐标,做了场景切换GUI,增加了游戏状态机的状态,添加了诸如暂停等占位功能, 添加了小怪生成动画,基本实现了demo
  27. 完善了敌人子弹的消除机制,完成了boss子弹的部分,修改了部分参数,完成了boss的冲撞技能(伤害等数值可能还需修改),修复了敌人子弹碰到友方单位消失的问题。
  28. 完成了包含node的UI框架搭建和游戏内角色选择功能,增加了白子的无人机技能,但还需要优化
  29. 加入了角色切换和介绍界面,支持手动选择角色
  30. 增加了关卡结束后下一关入口和战利品的生成好开启,暂时设置删除条件为进入loading状态,增加切换地图条件
  31. 完善了白子的技能
  32. 增加了新地图,修改了一些交互逻辑
  33. 修改了界面交互和枪的逻辑
  34. 增加了结算界面,优化了游戏状态切换时的手感,修复了血条位移异常的bug
  35. 增加了爱丽丝蓄力光之剑的效果,将地图加载改为进入大厅时重新加载并随机化地图,固定为四个随机刷怪放和一个boss房
  36. 增加了arisu盾反,测试了生存房的功能,加入了波次生成怪的功能
  37. 增加了部分音效
  38. 增加了生存战关卡
  39. 增加了技能冷却机制和图标
  40. 完善了utaha的炮塔机制,初步构建了utaha二技能击杀敌方单位生成无人机的机制
  41. 现在打完一个轮回后房间也会重新随机生成
  42. 完善了mk1技能
  43. 实现了敌人随关卡升级而升级的机制,优化了宝箱生成逻辑

//Issue

  1. 纹理集资源是否应该设置成一块缓存存放(解决一半)
  2. 角色纹理集已设置成全局静态变量,考虑在character和animation中调整(解决一半)
  3. 枪跟随鼠标的角度还是不太对(已解决)
  4. 能否为一碟醋包顿饺子:设计一个和unity相似的脚本可视化编辑平台(听说过bevity,但还没用过,不知道效果如何(*❦ω❦))
  5. debug运行过程中如果射久了音乐播放会卡顿,暂时还没弄清楚什么情况[○・`Д´・ ○]
  6. 有可能是并行部件太多了,总感觉开火音效有点延迟ε=(´ο`*)))
  7. 预计加入联机模块,暂时预计采用P2P混合C/S模式建立一个游乐房间
  8. resource要在开头的use中引用,不然会报错;枪的开火没法通用,ARISU的枪和子弹甚至有开火动画,而UTAHA居然用的不是枪,没法写通用的逻辑。后续考虑根据内存中的角色id判断角色,然后写不同的开火逻辑
  9. enemy的巡逻方向随机产生,可能会发生enemy一直朝着碰撞实体方向移动使得巡逻受到阻碍,enemy从角色下放上来的话会和角色重叠(to do)
  10. 转向俯视地图后,部分enemy的贴图(主要是Drone)可能需要更新
  11. 一旦涉及跳跃,血条就会抖动,可能时运算量过大的问题,也有可能时更新顺序的问题(已解决,原因是分布式函数在并发时设置了先后顺序导致的)
  12. tiled中对象的名字不是单纯的软件中写的名字,而是Object(名字)。 (P.S.有一种"密码是:123"的密码是":123"的感觉233)
  13. 碰撞产生事件严格来说需要双方都有collider和rigidbody部件,否则就必须要有rigidbody的一方属性为dynamic才会产生事件。如果想产生诸如击退等效果,需要为双方加上ColliderMassProperties::Mass(f32)的部件。
  14. 父实体与子实体存在同类型的组件时,查询父实体中的同类型组件会把子实体也查询到,这会导致需要分开查找父实体和子实体时不过滤查询就会崩溃,所以只查询父实体时要主动通过without过滤掉子实体
  15. 文本框溢出问题可以通过textlayout这个组件解决

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages

  • Rust 100.0%