bug修复

This commit is contained in:
kawagiri 2025-11-13 19:40:13 +08:00
parent f13c83439c
commit ac1330f1cf
3 changed files with 29 additions and 13 deletions

View File

@ -46,6 +46,7 @@ namespace Logic.Skill
info.IsFinished = true;
//提前记录unitRednerer(可能会死亡)
var unitRenderer = unit.Renderer(Main.MapData);
var cityinfoRenderer = unit.City(Main.MapData)?.CityInfoRenderer(Main.MapData);
var gridRenderer = unit.Grid(Main.MapData)?.Renderer(Main.MapData);
Main.UnitLogic.DamageSettlement(mapData, info.DamageOrigin, unit,info.DamageValue / 2, DamageType.Splash);
//脱离presentation体系 播放sakuya动画 TODO 这里有一点动画隐患之后要纳入presentation体系
@ -64,6 +65,7 @@ namespace Logic.Skill
else
unitRenderer.Die();
}
cityinfoRenderer?.InstantUpdateCityInfo();
},0.3f,"SAKUYA GUARD VFX");
return;
}

View File

@ -56,7 +56,8 @@ namespace Logic.Skill
if (mapData.IsLeagueUnitByUnit(unit.Id, info.DamageOrigin.Id)) continue;
// 计算攻击伤害
var damage = Table.Instance.CalcDamage(mapData, info.DamageOrigin, unit, damagePara:0.5f);
unit.Renderer(mapData)?.InstantUpdateUnit(true);
var city = unit.City(mapData);
unit.Renderer(mapData)?.InstantUpdateUnit(true);
Main.UnitLogic.DamageSettlement(mapData, info.DamageOrigin, unit, damage, DamageType.Splash);
//TODO 动画系统要接管
@ -70,6 +71,7 @@ namespace Logic.Skill
: 0.5f;
Timer.Instance.TimerRegister(this, () =>
{
city?.CityInfoRenderer(mapData)?.InstantUpdateCityInfo();
u.Renderer(mapData)?.InstantUpdateUnit(true);
u.Renderer(mapData)?.InstantUpdateTryDie();
g.Renderer(mapData)?.InstantUpdateGrid();

View File

@ -46,7 +46,10 @@ namespace Logic.Skill
if (!mapData.GetUnitDataByGid(roundGrid.Id, out var unit))
{
//TODO 下面的是不规范做法,后面要迭代
ROgrid.SetBounceAnim(NeedRandomWait:true);
if (roundGrid.InMainSight())
{
ROgrid.SetBounceAnim(NeedRandomWait:true);
}
}
//如果格子上有单位,播放地震动画,并且播放对方受伤动画
else
@ -56,19 +59,28 @@ namespace Logic.Skill
// 计算攻击伤害,执行伤害逻辑
var damage = Table.Instance.CalcDamage(mapData, self, unit, damagePara:0.5f);
var targetGrid = unit.Grid(mapData);
var city = unit.City(mapData);
Main.UnitLogic.DamageSettlement(mapData, self, unit, damage, DamageType.Splash);
//播放伤害数字特效
roundGrid.Renderer(mapData)?.PlayVFX(new GridVFXParams(GridVFXType.Damage,damage));
//更新unit的显示 ,unit即使已经死了也可以访问到renderer
unit.Renderer(mapData)?.InstantUpdateUnit(false);
unit.Renderer(mapData)?.InstantUpdateTryDie();
targetGrid?.Renderer(mapData)?.InstantUpdateGrid();
//TODO 下面的是不规范做法,后面要迭代
//播放受伤特效
roundGrid.Renderer(mapData)?.PlayVFX(new GridVFXParams(GridVFXType.Fog));
// 执行相关动画,包括伤害特效、伤害数字、以及可能得死亡特效
ROgrid.SetBounceAnim(NeedRandomWait:true);
//TODO 动画系统要接管
if (roundGrid.InMainSight())
{
//播放伤害数字特效
roundGrid.Renderer(mapData)?.PlayVFX(new GridVFXParams(GridVFXType.Damage,damage));
//更新unit所属的city的cityInfo
city?.CityInfoRenderer(mapData)?.InstantUpdateCityInfo();
//更新unit的显示 ,unit即使已经死了也可以访问到renderer
unit.Renderer(mapData)?.InstantUpdateUnit(false);
unit.Renderer(mapData)?.InstantUpdateTryDie();
targetGrid?.Renderer(mapData)?.InstantUpdateGrid();
//播放受伤特效
roundGrid.Renderer(mapData)?.PlayVFX(new GridVFXParams(GridVFXType.Fog));
// 执行相关动画,包括伤害特效、伤害数字、以及可能得死亡特效
ROgrid.SetBounceAnim(NeedRandomWait:true);
}
}