更新KomeijiFear的特效逻辑

This commit is contained in:
kawagiri 2026-04-19 16:02:59 +08:00
parent dae18f2888
commit ee568f1d6a
11 changed files with 2838 additions and 2563 deletions

2
.gitignore vendored
View File

@ -64,3 +64,5 @@ Publish/
!**/graphify-out/graph.json !**/graphify-out/graph.json
!**/graphify-out/manifest.json !**/graphify-out/manifest.json
!**/graphify-out/cost.json !**/graphify-out/cost.json
Unity/TH1.pub
Unity/TH1

View File

@ -1644,7 +1644,11 @@ namespace Logic.Action
{ {
// 存活添加恐惧并刷新UI // 存活添加恐惧并刷新UI
if (!target.GetSkill(SkillType.KomeijiFearImmune, out _)) if (!target.GetSkill(SkillType.KomeijiFearImmune, out _))
{
target.AddOrOverrideSkill(SkillType.KomeijiFear, map, unit.Id); target.AddOrOverrideSkill(SkillType.KomeijiFear, map, unit.Id);
// 播放恐惧VFX
around.Renderer(map)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
}
if (map == Main.MapData) if (map == Main.MapData)
{ {

View File

@ -38,7 +38,7 @@ namespace Logic.Skill
info.DamageTarget.AddOrOverrideSkill(SkillType.KomeijiFear, mapData, info.DamageOrigin.Id); info.DamageTarget.AddOrOverrideSkill(SkillType.KomeijiFear, mapData, info.DamageOrigin.Id);
// 视觉更新刷新目标单位显示显示debuff图标 // 视觉更新刷新目标单位显示显示debuff图标+ 播放KomeijiFear VFX
if (mapData != Main.MapData) return; if (mapData != Main.MapData) return;
if (!info.DamageTarget.IsAlive()) return; if (!info.DamageTarget.IsAlive()) return;
@ -52,11 +52,16 @@ namespace Logic.Skill
if (MapRenderer.Instance != null && if (MapRenderer.Instance != null &&
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer))
{ {
var targetGrid = info.DamageTarget.Grid(mapData);
scope.Add(new FragmentStep scope.Add(new FragmentStep
{ {
Phase = phase, Phase = phase,
Duration = 0.1f, Duration = 0.1f,
Execute = () => { unitRenderer.InstantUpdateUnit(false); } Execute = () =>
{
unitRenderer.InstantUpdateUnit(false);
targetGrid?.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
}
}); });
} }
} }
@ -66,6 +71,8 @@ namespace Logic.Skill
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer))
{ {
unitRenderer.RenderUpdateUnitImage(); unitRenderer.RenderUpdateUnitImage();
var targetGrid = info.DamageTarget.Grid(mapData);
targetGrid?.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
} }
} }
} }

View File

@ -49,6 +49,7 @@ namespace Logic.Skill
MapRenderer.Instance.ROUnitMap.TryGetValue(target.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(target.Id, out var unitRenderer))
{ {
unitRenderer.RenderUpdateUnitImage(); unitRenderer.RenderUpdateUnitImage();
around.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
} }
} }
ReturnAroundBuf(); ReturnAroundBuf();

View File

@ -10,6 +10,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using MemoryPack; using MemoryPack;
using TH1Renderer;
using UnityEngine; using UnityEngine;
namespace Logic.Skill namespace Logic.Skill
@ -45,6 +46,8 @@ namespace Logic.Skill
return; return;
} }
target.AddOrOverrideSkill(SkillType.KomeijiFear, mapData, self.Id); target.AddOrOverrideSkill(SkillType.KomeijiFear, mapData, self.Id);
// 播放恐惧VFX
around.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
} }
ReturnAroundBuf(); ReturnAroundBuf();
} }

View File

@ -132,6 +132,8 @@ namespace Logic.Skill
if (canSpread) if (canSpread)
{ {
target.AddOrOverrideSkill(SkillType.KomeijiFear, map, self.Id); target.AddOrOverrideSkill(SkillType.KomeijiFear, map, self.Id);
// 播放恐惧VFX
aroundRenderer?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
} }
unitsToRefresh.Add(target.Id); unitsToRefresh.Add(target.Id);
} }
@ -189,6 +191,9 @@ namespace Logic.Skill
if (target.Id != self.Id && !target.GetSkill(SkillType.KomeijiFearImmune, out _)) if (target.Id != self.Id && !target.GetSkill(SkillType.KomeijiFearImmune, out _))
{ {
target.AddOrOverrideSkill(SkillType.KomeijiFear, map, self.Id); target.AddOrOverrideSkill(SkillType.KomeijiFear, map, self.Id);
// 播放恐惧VFX
var aroundRenderer = isMainMap ? around.Renderer(map) : null;
aroundRenderer?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
unitsToRefresh.Add(target.Id); unitsToRefresh.Add(target.Id);
} }
} }

View File

@ -56,9 +56,12 @@ namespace Logic.Skill
if (isMainMap && MapRenderer.Instance != null && if (isMainMap && MapRenderer.Instance != null &&
MapRenderer.Instance.ROUnitMap.TryGetValue(unit.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(unit.Id, out var unitRenderer))
{ {
var gridRenderer = grid.Renderer(mapData);
visualSteps.Add(new SkillVisualStep visualSteps.Add(new SkillVisualStep
{ {
UnitRenderer = unitRenderer, UnitRenderer = unitRenderer,
GridRenderer = gridRenderer,
VFXList = new List<GridVFXParams> { new GridVFXParams(GridVFXType.KomeijiFear) },
RefreshUnit = true, RefreshUnit = true,
}); });
} }

View File

@ -54,11 +54,16 @@ namespace Logic.Skill
if (MapRenderer.Instance != null && if (MapRenderer.Instance != null &&
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer))
{ {
var targetGrid = info.DamageTarget.Grid(mapData);
scope.Add(new FragmentStep scope.Add(new FragmentStep
{ {
Phase = phase, Phase = phase,
Duration = 0.1f, Duration = 0.1f,
Execute = () => { unitRenderer.InstantUpdateUnit(false); } Execute = () =>
{
unitRenderer.InstantUpdateUnit(false);
targetGrid?.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
}
}); });
} }
} }
@ -69,6 +74,8 @@ namespace Logic.Skill
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer))
{ {
unitRenderer.RenderUpdateUnitImage(); unitRenderer.RenderUpdateUnitImage();
var targetGrid = info.DamageTarget.Grid(mapData);
targetGrid?.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
} }
} }
} }

View File

@ -63,11 +63,16 @@ namespace Logic.Skill
if (MapRenderer.Instance != null && if (MapRenderer.Instance != null &&
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageOrigin.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageOrigin.Id, out var unitRenderer))
{ {
var targetGrid = info.DamageOrigin.Grid(mapData);
scope.Add(new FragmentStep scope.Add(new FragmentStep
{ {
Phase = phase, Phase = phase,
Duration = 0.1f, Duration = 0.1f,
Execute = () => { unitRenderer.InstantUpdateUnit(false); } Execute = () =>
{
unitRenderer.InstantUpdateUnit(false);
targetGrid?.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
}
}); });
} }
} }
@ -77,6 +82,8 @@ namespace Logic.Skill
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageOrigin.Id, out var unitRenderer)) MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageOrigin.Id, out var unitRenderer))
{ {
unitRenderer.RenderUpdateUnitImage(); unitRenderer.RenderUpdateUnitImage();
var targetGrid = info.DamageOrigin.Grid(mapData);
targetGrid?.Renderer(mapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.KomeijiFear));
} }
} }
} }

File diff suppressed because it is too large Load Diff

Binary file not shown.