重构Actor类,添加变换矩阵计算和父子关系处理 - 添加本地和世界变换矩阵计算 - 实现锚点、旋转、缩放等变换属性 - 添加父子关系变换继承 - 优化子节点管理,支持按ZOrder排序 - 添加透明度继承功能
1.2 KiB
1.2 KiB
完善 Actor 旋转功能
问题描述
Actor 的 SetRotation 方法需要改进,增加角度规范化和相对旋转功能。
解决方案
1. 改进 SetRotation 方法
- 添加角度规范化到 [0, 360) 范围
- 使用已有的
normalizeAngle360函数
2. 添加 RotateBy 方法
- 新增相对旋转方法,用于在当前角度基础上增加/减少角度
- 同样会进行角度规范化
实现步骤
文件修改
-
Frostbite2D/include/frostbite2D/2d/actor.h
- 在
SetRotation方法声明后添加RotateBy方法声明
- 在
-
Frostbite2D/src/frostbite2D/2d/actor.cpp
- 改进
SetRotation方法,添加角度规范化 - 实现
RotateBy方法
- 改进
代码变更
actor.h 修改
在第 43 行后添加:
void RotateBy(float deltaRotation);
actor.cpp 修改
改进 SetRotation 方法(第 37-40 行):
void Actor::SetRotation(float rotation) {
rotation_ = normalizeAngle360(rotation);
markTransformDirty();
}
添加 RotateBy 方法:
void Actor::RotateBy(float deltaRotation) {
rotation_ = normalizeAngle360(rotation_ + deltaRotation);
markTransformDirty();
}
验证
- 运行
xmake build确保项目编译通过