feat(camera): 为相机组件添加简化的正交投影设置方法

添加一个接受宽高参数的 `setOrtho` 重载方法,以简化常见2D场景下的相机设置。同时更新示例代码以使用新方法,使代码更简洁易读。
This commit is contained in:
ChestnutYueyue 2026-03-16 22:03:25 +08:00
parent 0e85edb518
commit 3686ba35c1
5 changed files with 19 additions and 15 deletions

View File

@ -40,7 +40,7 @@ private:
cameraNode->setName("MainCamera"); cameraNode->setName("MainCamera");
cameraNode->setPosition(0.0f, 0.0f); cameraNode->setPosition(0.0f, 0.0f);
auto camera = makePtr<CameraComponent>(); auto camera = makePtr<CameraComponent>();
camera->setOrtho(0.0f, 1280.0f, 720.0f, 0.0f, -1.0f, 1.0f); camera->setOrtho(1280.0f, 720.0f);
cameraNode->addComponent(camera); cameraNode->addComponent(camera);
setMainCamera(camera); setMainCamera(camera);
addChild(cameraNode); addChild(cameraNode);
@ -72,21 +72,12 @@ int main(int argc, char **argv) {
return -1; return -1;
} }
SceneModule *sceneModule = app->getModule<SceneModule>(); auto director = app->getModule<SceneModule>()->getDirector();
if (!sceneModule) {
printf("获取场景模块失败!\n");
return -1;
}
Director *director = sceneModule->getDirector();
if (!director) { if (!director) {
printf("获取导演器失败!\n"); printf("获取导演器失败!\n");
return -1; return -1;
} }
director->runScene(makePtr<ImageDisplayScene>());
auto scene = makePtr<ImageDisplayScene>();
director->runScene(scene);
app->run(); app->run();
return 0; return 0;
} }

View File

@ -90,7 +90,7 @@ node->addComponent(sprite);
### 设置相机 ### 设置相机
```cpp ```cpp
auto camera = makePtr<CameraComponent>(); auto camera = makePtr<CameraComponent>();
camera->setOrtho(0, 1280, 0, 720, -1, 1); camera->setOrtho(1280, 720);
cameraNode->addComponent(camera); cameraNode->addComponent(camera);
scene->setMainCamera(camera); scene->setMainCamera(camera);
``` ```

View File

@ -157,7 +157,7 @@ void GameScene::createCamera() {
auto camera = makePtr<CameraComponent>(); auto camera = makePtr<CameraComponent>();
// 使用标准的2D投影左上角为(0, 0),右下角为(1280, 720) // 使用标准的2D投影左上角为(0, 0),右下角为(1280, 720)
// Y轴向下bottom=720, top=0 // Y轴向下bottom=720, top=0
camera->setOrtho(0.0f, 1280.0f, 720.0f, 0.0f, -1.0f, 1.0f); camera->setOrtho(1280.0f, 720.0f);
cameraNode->addComponent(camera); cameraNode->addComponent(camera);
// 设置为主相机 // 设置为主相机

View File

@ -51,6 +51,15 @@ public:
*/ */
ProjectionType getProjectionType() const { return projType_; } ProjectionType getProjectionType() const { return projType_; }
/**
* @brief
* @param width
* @param height
* @param near
* @param far
*/
void setOrtho(float width, float height, float near = -1.0f, float far = 1.0f);
/** /**
* @brief * @brief
* @param left * @param left

View File

@ -13,7 +13,11 @@ namespace extra2d {
* *
* (0, 0) (800, 600) * (0, 0) (800, 600)
*/ */
CameraComponent::CameraComponent() { setOrtho(0, 800, 600, 0, -1, 1); } CameraComponent::CameraComponent() { setOrtho(800.0f, 600.0f); }
void CameraComponent::setOrtho(float width, float height, float near, float far) {
setOrtho(0.0f, width, height, 0.0f, near, far);
}
/** /**
* @brief * @brief