|
|
@@ -1,177 +0,0 @@
|
|
|
-# Pellet子弹白色尾迹实现说明
|
|
|
-
|
|
|
-## 概述
|
|
|
-
|
|
|
-本文档说明了如何为 `Pellet.prefab` 预制体添加白色尾迹效果的完整实现方案。通过粒子系统和自定义控制脚本,实现了动态的白色尾迹效果。
|
|
|
-
|
|
|
-## 实现方案
|
|
|
-
|
|
|
-### 1. 预制体结构修改
|
|
|
-
|
|
|
-**文件**: `d:\CocosGame\Pong\assets\assets\Prefabs\Pellet.prefab`
|
|
|
-
|
|
|
-- 在原有的 `ParticleSystem` 子节点中添加了完整的 `ParticleSystem2D` 组件配置
|
|
|
-- 配置了白色尾迹的粒子效果参数:
|
|
|
- - 起始颜色:白色 (255, 255, 255, 255)
|
|
|
- - 结束颜色:透明白色 (255, 255, 255, 0)
|
|
|
- - 粒子生命周期:0.8秒
|
|
|
- - 发射速度:80像素/秒
|
|
|
- - 粒子大小:从8像素渐变到2像素
|
|
|
-
|
|
|
-### 2. 尾迹控制器脚本
|
|
|
-
|
|
|
-**文件**: `d:\CocosGame\Pong\assets\scripts\Animations\PelletTrailController.ts`
|
|
|
-
|
|
|
-**功能特性**:
|
|
|
-- 自动检测子弹移动方向并调整粒子发射角度
|
|
|
-- 根据子弹速度动态调整粒子发射率和速度
|
|
|
-- 提供颜色自定义接口
|
|
|
-- 支持启用/禁用尾迹效果
|
|
|
-
|
|
|
-**主要方法**:
|
|
|
-```typescript
|
|
|
-// 设置尾迹颜色
|
|
|
-setTrailColor(r: number, g: number, b: number, a: number = 255)
|
|
|
-
|
|
|
-// 启用/禁用尾迹效果
|
|
|
-setTrailEnabled(enabled: boolean)
|
|
|
-```
|
|
|
-
|
|
|
-### 3. 集成到现有子弹系统
|
|
|
-
|
|
|
-**文件**: `d:\CocosGame\Pong\assets\scripts\CombatSystem\WeaponBullet.ts`
|
|
|
-
|
|
|
-**修改内容**:
|
|
|
-- 导入 `PelletTrailController` 类
|
|
|
-- 在子弹初始化时自动添加尾迹控制器组件
|
|
|
-- 默认设置为白色尾迹效果
|
|
|
-
|
|
|
-**集成代码**:
|
|
|
-```typescript
|
|
|
-// 初始化尾迹控制器
|
|
|
-this.pelletTrailController = this.getComponent(PelletTrailController) || this.addComponent(PelletTrailController);
|
|
|
-// 设置白色尾迹
|
|
|
-this.pelletTrailController.setTrailColor(255, 255, 255, 255);
|
|
|
-this.pelletTrailController.setTrailEnabled(true);
|
|
|
-```
|
|
|
-
|
|
|
-### 4. 测试脚本
|
|
|
-
|
|
|
-**文件**: `d:\CocosGame\Pong\assets\scripts\TestScene\TestPelletTrail.ts`
|
|
|
-
|
|
|
-**功能**:
|
|
|
-- 每2秒自动发射一颗测试子弹
|
|
|
-- 验证白色尾迹效果是否正常工作
|
|
|
-- 提供手动测试接口
|
|
|
-
|
|
|
-## 使用方法
|
|
|
-
|
|
|
-### 自动应用(推荐)
|
|
|
-
|
|
|
-所有通过 `WeaponBullet` 系统创建的子弹都会自动应用白色尾迹效果,无需额外配置。
|
|
|
-
|
|
|
-### 手动控制
|
|
|
-
|
|
|
-如果需要自定义尾迹效果,可以获取 `PelletTrailController` 组件进行配置:
|
|
|
-
|
|
|
-```typescript
|
|
|
-const trailController = bulletNode.getComponent(PelletTrailController);
|
|
|
-if (trailController) {
|
|
|
- // 设置红色尾迹
|
|
|
- trailController.setTrailColor(255, 0, 0, 255);
|
|
|
-
|
|
|
- // 禁用尾迹
|
|
|
- trailController.setTrailEnabled(false);
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-### 测试验证
|
|
|
-
|
|
|
-1. 将 `TestPelletTrail` 脚本添加到场景中的任意节点
|
|
|
-2. 运行游戏,观察是否有带白色尾迹的测试子弹发射
|
|
|
-3. 或者在编辑器中调用 `fireTestBulletManual()` 方法手动测试
|
|
|
-
|
|
|
-## 技术细节
|
|
|
-
|
|
|
-### 粒子系统配置
|
|
|
-
|
|
|
-- **发射模式**: 重力模式 (emitterMode: 0)
|
|
|
-- **位置类型**: 相对位置 (positionType: 1)
|
|
|
-- **粒子总数**: 50个
|
|
|
-- **发射率**: 30个/秒(动态调整)
|
|
|
-- **角度**: 根据子弹移动方向动态计算
|
|
|
-
|
|
|
-### 性能优化
|
|
|
-
|
|
|
-- 粒子数量限制在50个以内
|
|
|
-- 子弹静止时自动停止粒子发射
|
|
|
-- 使用相对位置模式减少计算开销
|
|
|
-
|
|
|
-### 兼容性
|
|
|
-
|
|
|
-- 完全兼容现有的 `WeaponBullet` 系统
|
|
|
-- 不影响子弹的物理行为和碰撞检测
|
|
|
-- 支持所有类型的武器和子弹配置
|
|
|
-
|
|
|
-## 故障排除
|
|
|
-
|
|
|
-### 尾迹不显示
|
|
|
-
|
|
|
-1. 检查 `ParticleSystem2D` 组件是否正确配置
|
|
|
-2. 确认 `PelletTrailController` 组件已添加到子弹节点
|
|
|
-3. 验证粒子系统的 `enabled` 属性为 `true`
|
|
|
-
|
|
|
-### 尾迹方向错误
|
|
|
-
|
|
|
-1. 检查子弹的 `RigidBody2D` 组件是否正常工作
|
|
|
-2. 确认子弹有实际的移动速度
|
|
|
-3. 验证 `updateParticleDirection` 方法的角度计算
|
|
|
-
|
|
|
-### 性能问题
|
|
|
-
|
|
|
-1. 减少 `totalParticles` 数量
|
|
|
-2. 降低 `emissionRate` 发射率
|
|
|
-3. 缩短粒子 `life` 生命周期
|
|
|
-
|
|
|
-## 扩展功能
|
|
|
-
|
|
|
-### 多色尾迹
|
|
|
-
|
|
|
-可以根据子弹类型或武器等级设置不同颜色的尾迹:
|
|
|
-
|
|
|
-```typescript
|
|
|
-// 根据武器类型设置尾迹颜色
|
|
|
-switch (weaponType) {
|
|
|
- case 'fire':
|
|
|
- trailController.setTrailColor(255, 100, 0, 255); // 橙色
|
|
|
- break;
|
|
|
- case 'ice':
|
|
|
- trailController.setTrailColor(100, 200, 255, 255); // 蓝色
|
|
|
- break;
|
|
|
- default:
|
|
|
- trailController.setTrailColor(255, 255, 255, 255); // 白色
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-### 动态尾迹强度
|
|
|
-
|
|
|
-根据子弹伤害或速度调整尾迹的强度:
|
|
|
-
|
|
|
-```typescript
|
|
|
-// 根据子弹速度调整尾迹强度
|
|
|
-const speed = velocity.length();
|
|
|
-const intensity = Math.min(1, speed / 200); // 最大速度200时达到满强度
|
|
|
-trailController.setTrailColor(255, 255, 255, 255 * intensity);
|
|
|
-```
|
|
|
-
|
|
|
-## 总结
|
|
|
-
|
|
|
-通过以上实现,成功为 `Pellet.prefab` 添加了白色尾迹效果。该方案具有以下优势:
|
|
|
-
|
|
|
-1. **自动化**: 所有子弹自动应用尾迹效果
|
|
|
-2. **可定制**: 支持颜色和强度的自定义
|
|
|
-3. **高性能**: 优化的粒子系统配置
|
|
|
-4. **兼容性**: 完全兼容现有系统
|
|
|
-5. **可扩展**: 易于添加新的视觉效果
|
|
|
-
|
|
|
-该实现为游戏的视觉效果提升奠定了良好的基础,可以根据需要进一步扩展和优化。
|