Files
Frostbite2D/.opencode/plans/完善actor旋转功能.md
Lenheart 9a5b36392c refactor(actor): 重构Actor类以支持完整变换体系
重构Actor类,添加变换矩阵计算和父子关系处理
- 添加本地和世界变换矩阵计算
- 实现锚点、旋转、缩放等变换属性
- 添加父子关系变换继承
- 优化子节点管理,支持按ZOrder排序
- 添加透明度继承功能
2026-03-21 03:34:56 +08:00

54 lines
1.2 KiB
Markdown

# 完善 Actor 旋转功能
## 问题描述
Actor 的 SetRotation 方法需要改进,增加角度规范化和相对旋转功能。
## 解决方案
### 1. 改进 SetRotation 方法
- 添加角度规范化到 [0, 360) 范围
- 使用已有的 `normalizeAngle360` 函数
### 2. 添加 RotateBy 方法
- 新增相对旋转方法,用于在当前角度基础上增加/减少角度
- 同样会进行角度规范化
## 实现步骤
### 文件修改
1. **Frostbite2D/include/frostbite2D/2d/actor.h**
-`SetRotation` 方法声明后添加 `RotateBy` 方法声明
2. **Frostbite2D/src/frostbite2D/2d/actor.cpp**
- 改进 `SetRotation` 方法,添加角度规范化
- 实现 `RotateBy` 方法
## 代码变更
### actor.h 修改
在第 43 行后添加:
```cpp
void RotateBy(float deltaRotation);
```
### actor.cpp 修改
改进 SetRotation 方法(第 37-40 行):
```cpp
void Actor::SetRotation(float rotation) {
rotation_ = normalizeAngle360(rotation);
markTransformDirty();
}
```
添加 RotateBy 方法:
```cpp
void Actor::RotateBy(float deltaRotation) {
rotation_ = normalizeAngle360(rotation_ + deltaRotation);
markTransformDirty();
}
```
## 验证
- 运行 `xmake build` 确保项目编译通过