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

1.2 KiB

完善 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 行后添加:

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 确保项目编译通过