feat(camera): 为相机组件添加简化的正交投影设置方法
添加一个接受宽高参数的 `setOrtho` 重载方法,以简化常见2D场景下的相机设置。同时更新示例代码以使用新方法,使代码更简洁易读。
This commit is contained in:
parent
0e85edb518
commit
3686ba35c1
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
// 设置为主相机
|
// 设置为主相机
|
||||||
|
|
|
||||||
|
|
@ -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 左边界
|
||||||
|
|
|
||||||
|
|
@ -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 设置投影类型
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue