更新开发日志

This commit is contained in:
小李xl 2023-12-07 21:17:21 +08:00
parent 8e3a2c7aa3
commit 886e7b6145
13 changed files with 48 additions and 8 deletions

View File

@ -1,7 +1,41 @@
---
### 2023-12-07
项目正式从Godot4.2beta升级到4.2, 这一个半月主要工作内容:
* 新增武器:
* 榴弹发射器, 发射可以爆炸并造成范围伤害的弹丸, 爆炸会影响地上的弹壳和碎屑
* 激光手枪, 发射具有穿透敌人身体并造成伤害的激光
* 新增道具:
* 弹射子弹 子弹反弹次数+2
* 穿透子弹, 子弹穿透+1
* 武器背包, 武器容量+1
* 道具背包, 道具容量+1
* 武器预制体移除握把标记, 现在武器原点变为握把位置, 旋转中心点变为`AnimatedSprite`精灵的中心点, 这样更加方便制作武器动画
* 新增对象池功能, 对象池类为`ObjectPool`, 可入池对象必须实现`IPoolItem`接口, 但为了方便获取池中的物体, 新增`ObjectManager`用于根据某些标记快速获取对象池中的物体
* 新增`FreezeSprite`, 用于绘制静止不动的 `ActivityObject`,从而优化性能, 包含功能:
* 调用`Freeze()`和`Unfreeze()`来冻结和解冻, 与`BecomesStaticImage()`不同的是, `Freeze()`并不会销毁物体, 并且可逆
* 提供了检测圆形范围内所有冻结实例的接口`RoomStaticSprite.CollisionCircle()`, 可用类似爆炸等造成范围影响的功能
* 每个区域有`FreezeSprite`数量上限, 防止数量过多造成卡顿
* 游戏解锁高帧率模式, 不再像以前一样锁定60帧了, 现在支持无上限帧数和垂直同步(暂未加入到游戏设置中)
* 将子弹伤害射程等基础配置移动到了`BulletBase.xlsx`配置表中
* 优化子弹创建逻辑, 现在调用`FireManager.ShootBullet()`发射字段, 调用`FireManager.ThrowShell()`抛射弹壳
* 新增物体材质, 配置表为`ActivityMaterial.xlsx`, 并提供`摩擦力`,`重力`,`回弹`等基础物理模拟属性
* 在完美像素模式下实现相机平滑移动
* 新增第二个敌人, 一个全身附着粘液的怪物, 发射带抛物线的远程子弹, 移动时地上会留下一滩粘液(暂未制作互动效果)
* 优化Ai状态机, 现在Ai发现玩家后会执行通知其它敌人的状态, 其它敌人收到通知时会走向玩家位置
* 更新玩家翻滚动作, 更新地牢素材
* 新增绘制液体功能, 根据笔刷(`BrushImageData`)在`LiquidCanvas`上绘制液体, 液体会随着时间消散, 液体材质配置为`LiquidMaterial.xlsx`, 液体笔刷管理器为`LiquidBrushManager`, `ActivityObject`新增绘制液体函数`DrawLiquid()`, 目前暂未制作互动效果
* `ActivityObject`支持自定义阴影, 在预制体的`ShadowSprite`节点中放入阴影纹理即可视为自定义阴影
* 游戏右上角小地图, 未探索的房间将显示问号, 已探索的房间显示房间轮廓, 并且显示房间内敌人的位置, 按下`ctrl`键展开小地图, 展开后使用鼠标右键可以拖拽小地图, 并且点击鼠标左键可以传送到已经探索的房间
* 完善敌人死亡效果, 碎片会在地上留下血迹
* 将敌方子弹的颜色改为红白色, 更加容易区分敌我弹幕
* 修复武器没弹药后再触发扳机必须要等攻击冷却完成后才能触发换弹的bug
* 修复分裂子弹伤害计算错误的bug
* 修复武器换弹时扔掉或者放到背后会继续执行动画的问题
---
### 2023-10-20
项目从Godot4.1升级到4.2bate, 使用了部分新功能以提升视觉效果, 本月主要完善`Role`的动作和提升地牢视觉效果, 项目已正式开源
项目从Godot4.1升级到4.2beta, 使用了部分新功能以提升视觉效果, 本月主要完善`Role`的动作和提升地牢视觉效果, 项目已正式开源
将项目的Ui框架抽成一个单独的Ui插件, 命名为`DsUi`
近一个半月主要工作内容如下:
* 项目已经开启2Dhdr, 也就是辉光效果, 现在子弹, 开火特效等都有了高光效果

View File

@ -2,7 +2,7 @@
{
"Id": "0001",
"Remark": "\u6BD2\u6DB2",
"BurshTexture": "res://resource/sprite/brush/Brush2.png",
"BrushTexture": "res://resource/sprite/brush/Brush2.png",
"Ffm": 0.5,
"Duration": 5,
"WriteOffSpeed": 0.2
@ -10,7 +10,7 @@
{
"Id": "0002",
"Remark": "\u654C\u4EBA0002\u7684\u7C98\u6DB2",
"BurshTexture": "res://resource/sprite/brush/Brush3.png",
"BrushTexture": "res://resource/sprite/brush/Brush3.png",
"Ffm": 0.7,
"Duration": 4,
"WriteOffSpeed": 0.2
@ -18,7 +18,7 @@
{
"Id": "0003",
"Remark": "\u8840\u6DB2(\u6700\u5C0F\u7B14\u5237)",
"BurshTexture": "res://resource/sprite/brush/Brush4.png",
"BrushTexture": "res://resource/sprite/brush/Brush4.png",
"Ffm": 0.5,
"Duration": 12,
"WriteOffSpeed": 0.2
@ -26,7 +26,7 @@
{
"Id": "0004",
"Remark": "\u7C98\u6DB2(\u6700\u5C0F\u7B14\u5237)",
"BurshTexture": "res://resource/sprite/brush/Brush5.png",
"BrushTexture": "res://resource/sprite/brush/Brush5.png",
"Ffm": 0.5,
"Duration": 5,
"WriteOffSpeed": 0.2

View File

@ -23,7 +23,7 @@ public static partial class ExcelConfig
/// 笔刷贴图
/// </summary>
[JsonInclude]
public string BurshTexture;
public string BrushTexture;
/// <summary>
/// 补帧间距倍率(0-1)
@ -52,7 +52,7 @@ public static partial class ExcelConfig
var inst = new LiquidMaterial();
inst.Id = Id;
inst.Remark = Remark;
inst.BurshTexture = BurshTexture;
inst.BrushTexture = BrushTexture;
inst.Ffm = Ffm;
inst.Duration = Duration;
inst.WriteOffSpeed = WriteOffSpeed;

View File

@ -112,6 +112,12 @@ public partial class RoomStaticSprite : Node2D, IDestroy
}
}
/// <summary>
/// 获取指定圆形范围内所有已经被冻结的物体
/// </summary>
/// <param name="position">圆形中心点坐标</param>
/// <param name="radius">圆形半径</param>
/// <param name="unfreeze">是否解冻物体</param>
public List<FreezeSprite> CollisionCircle(Vector2 position, float radius, bool unfreeze = false)
{
var len = radius * radius;

View File

@ -45,7 +45,7 @@ public class BrushImageData
public BrushImageData(ExcelConfig.LiquidMaterial material)
{
Material = material;
var image = GetImageData(material.BurshTexture);
var image = GetImageData(material.BrushTexture);
var list = new List<BrushPixelData>();
var width = image.GetWidth();
var height = image.GetHeight();