# butterfly **Repository Path**: jezzhu/butterfly ## Basic Information - **Project Name**: butterfly - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 蝴蝶飞行模拟器 (Butterfly Flight Simulator) 一个基于Unity的3D蝴蝶飞行模拟系统,实现了蝴蝶的自由飞行、返回原点和动画控制功能。 ## 功能特性 ### 🦋 核心功能 - **自由飞行模式**:蝴蝶在指定范围内随机飞行 - **返回原点模式**:按键控制蝴蝶返回到原点位置 - **加速飞行**:离开原点时的短暂加速效果 - **边界约束**:自动限制蝴蝶在设定的飞行范围内 - **动画系统**:支持飞行和静止两种动画状态 ### 🎮 交互控制 - **B键**:让蝴蝶开始返回原点,同时播放idle动画 - **G键**:当蝴蝶在原点附近时,开始自由飞行并播放flying动画 ### ✨ 飞行特性 - **智能转向**:蝴蝶会面向飞行方向,并在转弯时产生自然的侧倾效果 - **边界反弹**:触碰到飞行范围边界时自动调整方向 - **随机方向变化**:定期改变飞行方向,模拟真实蝴蝶的飞行模式 - **垂直飞行限制**:Y轴方向变化较小,保持相对平稳的飞行高度 ## 参数配置 ### 飞行设置 (Inspector面板可调) | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `flySpeed` | float | 3.0f | 正常飞行速度 | | `directionChangeInterval` | float | 2.0f | 方向改变间隔时间(秒) | | `returnSpeed` | float | 2.0f | 返回原点时的飞行速度 | | `spawnRange` | Vector3 | (5,5,5) | 飞行范围限制 | ### 内部参数 | 参数 | 值 | 说明 | |------|-----|------| | `boostDuration` | 3.0f | 加速飞行持续时间 | | `boostSpeed` | 3.0f-5.0f | 随机加速速度范围 | | 到达原点判定距离 | 0.5f | 判定蝴蝶是否到达原点的距离阈值 | ## 使用方法 ### 1. 基础设置 1. 将 `Butterfly.cs` 脚本附加到蝴蝶GameObject上 2. 确保蝴蝶对象包含 `Animation` 组件 3. 准备两个动画文件: - `flying` - 飞行动画(循环播放) - `idle` - 静止动画(播放一次) ### 2. 动画配置 - 将动画文件拖拽到Animation组件中 - 确保idle动画的Wrap Mode设置为"Once" - 确保flying动画的Wrap Mode设置为"Loop" ### 3. 运行控制 1. **游戏开始**:蝴蝶会在随机位置开始自由飞行 2. **按B键**:蝴蝶停止当前动作,播放idle动画并开始返回原点 3. **按G键**:当蝴蝶在原点附近时,开始加速飞行并播放flying动画 ## 技术实现 ### 飞行算法 - **随机方向生成**:使用标准化的三维向量,Y轴变化幅度较小 - **平滑转向**:使用 `Quaternion.Slerp` 实现平滑的方向转换 - **侧倾效果**:根据转向速率计算银行角度,模拟真实飞行 ### 边界处理 ```csharp // 飞行范围约束逻辑 - X轴:±spawnRange.x - Y轴:0 到 spawnRange.y - Z轴:±spawnRange.z ``` ### 状态管理 - `isReturning`:是否正在返回原点 - `isBoostingAway`:是否正在加速离开原点 - `directionTimer`:方向改变计时器 ## 项目结构