Files
aibis-dream/Assets/Scripts/MiniGame/HuoShan/Language/LanguageParticleSystem_Summary.md
T
2025-11-12 19:46:16 +08:00

4.1 KiB
Raw Blame History

语言粒子系统效果总结

核心功能

1. 粒子系统

  • 背景浮动文字(100个):半透明、缓慢移动、定期随机变换字符
  • 可交互候选粒子50个):
    • 蓝色粒子:普通粒子
    • 红色粒子:目标粒子(8个,需要连接)
    • 橙色粒子:被红色粒子"感染"的蓝色粒子

2. 粒子行为

  • 边界反弹
  • 相互排斥(避免重叠)
  • 字符定期随机变化(中文字符集)
  • 可选词组模式(相邻粒子组成词组)

3. 连接系统

  • 距离小于200像素的粒子之间绘制连线
  • 蓝色粒子间:细蓝线
  • 红色粒子间:粗红线

4. 交互效果

  • 涟漪效果(右键):吸引附近粒子
  • 排斥爆发(左键):推开附近粒子
  • 粒子受力后产生速度变化

5. 效果传播系统

  • 当红色粒子与蓝色粒子新建立连接时:
    • 蓝色粒子变橙色
    • 橙色粒子字符变化加速(3倍速)
    • 橙色粒子产生振动效果
    • 橙色粒子有光晕和缩放动画
  • 效果可以链式传播(橙色粒子连接新的蓝色粒子)
  • 最多传播8步
  • 传播时绘制连接线、脉冲光点、箭头

6. 游戏目标与完成序列

目标:让所有红色粒子连接成一个整体,且与蓝色粒子分离

完成序列

  1. arranging阶段

    • 红色粒子排列成水平一行(屏幕中央)
    • 蓝色/橙色粒子停止移动
    • 非红色粒子淡出
  2. revealing阶段

    • 红色粒子逐个显示目标文字:"别过来我感觉害怕"
    • 显示前快速闪烁随机字符
    • 文字开始剧烈抖动(焦虑效果)
  3. completed阶段

    • 进入波形交互阶段

7. 波形交互系统(核心创新)

初始状态

  • 每个文字下方有一个对应的波形点
  • 波形使用Perlin噪声生成(多层噪声叠加)
  • 波形呈现异常、混乱的抖动
  • 文字随波形剧烈抖动+上下漂浮(表现焦虑情绪)

交互机制

  • 玩家按住鼠标左键并拖动,抚平附近的波形
  • 波形有"抵抗力"机制:
    • 异常程度越高,抵抗力越强
    • 需要持续按住30-90帧才能完全抚平
    • 拖动速度越快,抚平效果越强
  • 抚平区域有交互半径(50像素)
  • 显示进度环反馈

抚平效果

  • 波形从异常噪波逐渐变为规律的正弦波
  • 波形颜色从红色渐变为蓝色
  • 对应文字的抖动和漂浮逐渐减弱
  • 波形完全抚平后:
    • 文字停止变化和抖动
    • 文字开始消散(透明度降低)
    • 波形点也随之消散

视觉反馈

  • 抚平时产生蓝色粒子效果
  • 鼠标周围显示交互范围圈
  • 波形点显示抚平进度环
  • 底部显示整体平静进度条

情感隐喻

  • 异常波形 = 焦虑、不安的情绪
  • 文字抖动 = 情绪的外在表现
  • 抚平波形 = 安抚、平复情绪的过程
  • 文字消散 = 负面情绪的消解

8. 重置机制

  • 所有文字消散后,游戏自动重置
  • 粒子重新随机分布
  • 重新选择8个红色目标粒子

Unity实现要点

技术选型

  1. 文字渲染TextMeshPro(支持中文)
  2. 线条绘制Shapes插件
  3. 动画DOTween
  4. 画布10x10 World Space Canvas
  5. 输入Unity Input System或传统Input

核心挑战

  1. Perlin噪声波形生成与平滑
  2. 粒子间连接检测与效果传播
  3. 波形交互的抵抗力机制
  4. 文字抖动与消散效果
  5. 性能优化(大量粒子+连线)

建议架构

LanguageParticleManager(主管理器)
├── FloatingTextParticle(背景文字)
├── CandidateParticle(候选粒子)
├── ConnectionRenderer(连线渲染)
├── EffectPropagationSystem(效果传播)
├── WaveformSystem(波形系统)
│   ├── WaveformPoint(波形点)
│   └── WaveformRenderer(波形渲染)
└── InteractionHandler(交互处理)

性能优化建议

  1. 使用对象池管理粒子和效果
  2. 连接检测使用空间分区(如Grid
  3. 波形点数量与文字数量一致(8个)
  4. 粒子效果使用Instancing
  5. 线条使用批量绘制