Camera相机怎么绕屏幕中心旋转(2D)

cocos2dx里,camera的锚点在(0,0),修改后无效,我想让镜头按着屏幕中心旋转,你们是怎么做的?以前不用camera,我都是设置一个空节点然后把背景加上去,然后旋转,请问怎么只用这个camera就能按着屏幕中心旋转?

需求这种效果?

是这种效果,在2D平面里创建一个正交的camera,围绕整个屏幕中心旋转,就是一个土办法,就是弄个节点A,然后加上子节点camera,设置偏离位置,然后旋转这个A。有没有更优雅的办法?只动这个camera的。

相机本身也是 Node,你可以直接旋转它啊。

1赞

相机的锚点在(0,0),我想在屏幕中心旋转,也就是逻辑上的(0.5,0.5),但是修改后对camera无效啊,我看了例子里的,是用一个辅助节点实现绕y轴旋转的。

看了 Scene::render() 的代码,确实是不行。目前可以通过这种方式实现:

  • 继承 Scene
  • 覆盖虚函数 Scene::render()
  • 在自己的 render 函数里实现如下
void HelloWorld::render(Renderer* renderer, const Mat4& eyeTransform, const Mat4* eyeProjection)
{
    static float angle = 0;  // 需改成更好的方式

    Mat4 rotation;
    Mat4::createRotationZ(angle++ / 180 * 3.1415926, &rotation);
    
    Scene::render(renderer, rotation, eyeProjection);
}

上面的代码只是说明,自己改成比较规范的方式。