(client) feat:实现技能树界面,实现地图生成器,实现维度指定,实现规则瓦片定义,实现逃跑逻辑,实现消息定义,实现武器动画,实现受击动画 fix: 修复单攻击子弹击中多个目标,修复人物属性计算错误 (#56)

Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com>
Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/56
This commit is contained in:
2025-09-19 08:26:54 +08:00
parent 78849e0cc5
commit 87a8abe86c
282 changed files with 19364 additions and 8824 deletions

View File

@@ -11,7 +11,10 @@ namespace Utils
Initialize();
}
// 初始化混淆表
/// <summary>
/// 初始化混淆表。
/// </summary>
/// <param name="seed">随机种子。</param>
private void Initialize(int seed = 0)
{
var permutation = new int[256];
@@ -36,28 +39,48 @@ namespace Utils
}
}
// 重新指定种子
/// <summary>
/// 重新指定种子并初始化混淆表。
/// </summary>
/// <param name="seed">随机种子。</param>
public void Reinitialize(int seed)
{
Initialize(seed);
}
// 平滑函数 (6t^5 - 15t^4 + 10t^3)
/// <summary>
/// Perlin噪声平滑函数 (6t^5 - 15t^4 + 10t^3)。
/// </summary>
/// <param name="t">输入值。</param>
/// <returns>平滑后的值。</returns>
private static double Fade(double t)
{
return t * t * t * (t * (t * 6 - 15) + 10);
}
// 线性插值
/// <summary>
/// 线性插值。
/// </summary>
/// <param name="t">插值因子 (0-1)。</param>
/// <param name="a">起始值。</param>
/// <param name="b">结束值。</param>
/// <returns>插值结果。</returns>
private static double Lerp(double t, double a, double b)
{
return a + t * (b - a);
}
// 计算梯度向量和距离向量的点积
/// <summary>
/// 计算梯度向量和距离向量的点积。
/// </summary>
/// <param name="hash">哈希值,用于决定梯度向量方向。</param>
/// <param name="x">X轴距离。</param>
/// <param name="y">Y轴距离。</param>
/// <param name="z">Z轴距离。</param>
/// <returns>点积结果。</returns>
private static double Grad(int hash, double x, double y, double z)
{
return (hash & 0xF) switch // 取hash值的最后4位
return (hash & 0xF) switch // 取哈希值的最后4位决定梯度方向
{
0x0 => x + y,
0x1 => -x + y,
@@ -80,9 +103,13 @@ namespace Utils
}
/// <summary>
/// 为给定的(x, y, z)坐标生成3D Perlin噪声。
/// 输出值通常在-1到1之间。
/// 为给定的(x, y, z)坐标生成3D Perlin噪声。
/// 输出值通常在-1到1之间。
/// </summary>
/// <param name="x">X坐标。</param>
/// <param name="y">Y坐标默认为0。</param>
/// <param name="z">Z坐标默认为0。</param>
/// <returns>Perlin噪声值。</returns>
public double Noise(double x, double y = 0, double z = 0)
{
var X = (int)Math.Floor(x) & 255;
@@ -126,4 +153,4 @@ namespace Utils
return Lerp(w, y0, y1);
}
}
}
}