在Scene3DTest里面,有个对话框层,可以显示2dui和3d的模型,为这个层添加了几个相机。
代码如下:
问题是 _dlgScene->setPosition3D,现在设定的值为(10000,0,0),这样设置了后,dlg层上的按钮不能点击,
把值改为(0,0,0)就可以,这个应该是被前面的ui层挡住了,所以先响应ui层的按钮了。
这个setPosition3D()是不是设置layer在父节点中的位置,为什么改了这个位置,dlg还是可以正确显示在屏幕上呢。而且不管怎么改,xy显示都不会变,深度有点变化。
实在不能理解下面的注释。被他坐标系搞乱了,哪位帮忙解释下
/** The scenes, located in different position, won’t see each other. */
static Vec3 s_scenePositons = {
Vec3(0, 0, 0), // center : UI scene
Vec3(0, 10000, 0), // top : World sub scene
Vec3(10000, 10000, 0), // right : Dialog sub scene
Vec3(0, -10000, 0), // bottom : OSD sub scene
};
////////////////////////////////////////////////////////////////////////
// create dialog scene, this scene has two dialog and three cameras
_dlgScene = Layer::create();
// use default camera to render the base 2D elements
ca = _gameCameras = Camera::create();
ca->setDepth(CAMERA_DIALOG_2D_BASE);
ca->setName(s_CameraNames);
_dlgScene->addChild(ca);
// create a camera to look the 3D model in dialog scene
ca = _gameCameras = Camera::create();
ca->setDepth(CAMERA_DIALOG_3D_MODEL);
ca->setName(s_CameraNames);
ca->setCameraFlag(s_CF);
_dlgScene->addChild(ca);
// create a camera to look the UI element over on the 3D models
ca = _gameCameras = Camera::create();
ca->setDepth(CAMERA_DIALOG_2D_ABOVE);
ca->setName(s_CameraNames);
ca->setCameraFlag(s_CF);
_dlgScene->addChild(ca);
// create dialogs and add to dialog scene
createPlayerDlg();
_dlgScene->addChild(_playerDlg);
createDetailDlg();
_dlgScene->addChild(_detailDlg);
// add dialog scene to test scene, which can't see the other element
_dlgScene->setPosition3D(s_scenePositons);
_playerDlg->setVisible(true);