fix(huoshan): 收紧辉光管绘制区域避免轻微溢出
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,6 +15,10 @@ namespace AibisDream.MiniGame.HuoShan
|
||||
[Tooltip("效果区域参考(取其 SpriteRenderer bounds),不填则用自身")]
|
||||
[SerializeField] private SpriteRenderer areaReference;
|
||||
|
||||
[Tooltip("相对参考区域向内收缩比例,避免辉光贴满边框轻微溢出")]
|
||||
[Range(0f, 0.2f)]
|
||||
[SerializeField] private float areaInset = 0.04f;
|
||||
|
||||
[Header("像素网格")]
|
||||
[Tooltip("横向像素格数(纵向按区域纵横比自动推算)")]
|
||||
[SerializeField] private int pixelColumns = 72;
|
||||
@@ -201,7 +205,10 @@ namespace AibisDream.MiniGame.HuoShan
|
||||
if (reference != null)
|
||||
{
|
||||
var b = reference.bounds;
|
||||
_areaHalfSize = new Vector2(Mathf.Max(0.01f, b.extents.x), Mathf.Max(0.01f, b.extents.y));
|
||||
float inset = 1f - Mathf.Clamp01(areaInset);
|
||||
_areaHalfSize = new Vector2(
|
||||
Mathf.Max(0.01f, b.extents.x * inset),
|
||||
Mathf.Max(0.01f, b.extents.y * inset));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -340,7 +347,8 @@ namespace AibisDream.MiniGame.HuoShan
|
||||
float x = Random.value < sparkEdgeBias
|
||||
? Mathf.Max(0f, _fill - Random.value * edgeHotWidth * 0.8f) // 前沿迸溅
|
||||
: Random.value * _fill;
|
||||
float y = 0.5f + (Random.value - 0.5f) * 0.75f;
|
||||
// 略收纵向散布,避免火花贴边后冲出管体外框
|
||||
float y = 0.5f + (Random.value - 0.5f) * 0.62f;
|
||||
|
||||
float outward = y >= 0.5f ? 1f : -1f;
|
||||
float life = Mathf.Max(0.05f, sparkLife * (0.55f + Random.value * 0.9f));
|
||||
@@ -351,7 +359,7 @@ namespace AibisDream.MiniGame.HuoShan
|
||||
Y = y,
|
||||
// 略偏左:被抑制的方向
|
||||
VX = (Random.value - 0.5f) * 0.55f - 0.12f,
|
||||
VY = outward * (0.3f + Random.value * 1.1f),
|
||||
VY = outward * (0.22f + Random.value * 0.85f),
|
||||
Life = life,
|
||||
MaxLife = life
|
||||
};
|
||||
@@ -432,7 +440,7 @@ namespace AibisDream.MiniGame.HuoShan
|
||||
|
||||
// 每行前沿单独抖动:右端像火焰一样翻腾,而不是一条硬边
|
||||
float boilN = Mathf.PerlinNoise(py * 0.35f + _seedY, _time * 6f) - 0.5f;
|
||||
float fillEdge = _fill + boilN * edgeBoil * 2f;
|
||||
float fillEdge = Mathf.Min(1f, _fill + boilN * edgeBoil * 2f);
|
||||
|
||||
for (int px = 0; px < w; px++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user