Pet-RS 桌面宠物机器人技术文档
声明: AI辅助写一篇文档试试水。。。
======================
🤖
Pet-RS 桌面宠物机器人技术文档
基于 Rust + egui 的可爱桌面宠物
摘要:一个基于 Rust + egui 的可爱桌面宠物,具有跟随鼠标和周期性可爱动作的功能。本文详解技术架构、行为系统、动画系统设计与实现。
📋 项目概述
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
✨ 功能特性
- 跟随鼠标
: 宠物会平滑地跟随鼠标移动 - 可爱动作
: 周期性执行眨眼、跳跃、挥手、旋转、心跳等动作 - 透明窗口
: 无边框透明窗口,鼠标穿透 - 总是置顶
: 宠物窗口始终显示在最上层 - 设置面板
: 可调整大小、速度,测试各种动作
🏗️ 技术架构
┌─────────────────────────────────────┐ │ eframe 应用层 (main.rs) │ │ - 窗口配置(透明、无边框、置顶) │ │ - 输入事件处理 │ │ - 渲染循环 │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 宠物核心层 │ │ ┌─────────────┐ ┌──────────────┐ │ │ │ Pet (pet) │ │ BehaviorMgr │ │ │ │ - 位置/目标 │ │ - 行为注册 │ │ │ │ - 配置 │ │ - 行为调度 │ │ │ │ - 动画状态 │ │ - 优先级/冷却 │ │ │ │ - 绘制方法 │ │ │ │ │ └─────────────┘ └──────────────┘ │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ egui 渲染引擎 │ └─────────────────────────────────────┘
🔧 核心模块
1. DesktopPet (main.rs)
职责: 应用主体,管理窗口、事件和渲染循环
struct DesktopPet { pet: Pet, // 宠物实例 show_settings: bool, // 设置面板显示状态 window_offset: Vec2, // 窗口偏移 }
2. Pet 模块 (pet.rs)
PetConfig 配置:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
🧠 行为系统设计
enum BehaviorType { Idle, // 待机 Blink, // 眨眼 Jump, // 跳跃 Wave, // 挥手 Spin, // 旋转 HeartBeat, // 心跳 Yawn, // 打哈欠 Nod, // 点头 }
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
🎨 动画系统
使用正弦函数和线性插值 (lerp) 实现平滑动画过渡,每个行为对应不同的动画状态更新逻辑。
fn lerp(a: f32, b: f32, t: f32) -> f32 { a + (b - a) * t.clamp(0.0, 1.0) }
⚡ 性能优化
- 增量渲染
: egui 只在需要时重绘 - 轻量级计算
: 使用简单数学公式 - Release 优化
: LTO + opt-level 3
🚀 快速开始
# 开发模式运行 cargo run # 发布模式运行(性能最优) cargo run --release
文档版本: 1.0 | 最后更新: 2026-03-02
夜雨聆风
