78 lines
2.4 KiB
Markdown
78 lines
2.4 KiB
Markdown
# 语言粒子系统效果总结
|
||
|
||
## 核心功能
|
||
|
||
### 1. 粒子系统
|
||
- **背景浮动文字**(100个):半透明、缓慢移动、定期随机变换字符
|
||
- **可交互候选粒子**(50个):
|
||
- 蓝色粒子:普通粒子
|
||
- 红色粒子:目标粒子(8个,需要连接)
|
||
- 橙色粒子:被红色粒子"感染"的蓝色粒子
|
||
|
||
### 2. 粒子行为
|
||
- 边界反弹
|
||
- 相互排斥(避免重叠)
|
||
- 字符定期随机变化(中文字符集)
|
||
- 可选词组模式(相邻粒子组成词组)
|
||
|
||
### 3. 连接系统
|
||
- 距离小于200像素的粒子之间绘制连线
|
||
- 蓝色粒子间:细蓝线
|
||
- 红色粒子间:粗红线
|
||
|
||
### 4. 交互效果
|
||
- **涟漪效果**(右键):吸引附近粒子
|
||
- **排斥爆发**(左键):推开附近粒子
|
||
- 粒子受力后产生速度变化
|
||
|
||
### 5. 效果传播系统
|
||
- 当红色粒子与蓝色粒子新建立连接时:
|
||
- 蓝色粒子变橙色
|
||
- 橙色粒子字符变化加速(3倍速)
|
||
- 橙色粒子产生振动效果
|
||
- 橙色粒子有光晕和缩放动画
|
||
- 效果可以链式传播(橙色粒子连接新的蓝色粒子)
|
||
- 最多传播8步
|
||
- 传播时绘制连接线、脉冲光点、箭头
|
||
|
||
### 6. 游戏目标与完成序列
|
||
**目标**:让所有红色粒子连接成一个整体,且与蓝色粒子分离
|
||
|
||
|
||
## 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. 线条使用批量绘制
|
||
|