如何在Cocos2d中添加一个始终在屏幕上的精灵
How to add a sprite that is always on the screen in Cocos2d?
我正在使用c++中的cocos2d-x v3制作一款平台游戏,其中的地图通常非常大,可见屏幕跟随对象穿过地图。
假设我想在屏幕的右上角显示一个精灵,即使屏幕跟随对象,它也会在这个位置。
使用对象位置不起作用。
是否有一种方法可以在屏幕上显示一个精灵或任何东西,即使屏幕在移动,它也会在屏幕上?
p。我是游戏开发的新手
正如这里所写的,您应该使用convertToWorldSpace
convertToWorldSpace
将节点坐标转换为SCREEN坐标。convertToWorldSpace将总是返回我们精灵的屏幕位置,如果你想捕捉精灵上的轻拍,但需要移动/缩放你的图层,这可能非常有用。通常,父节点用子节点的位置调用此方法,返回子节点的世界位置作为结果。如果调用者不是父对象,那么调用这个方法似乎没有意义。
所以,正如你所读的,
Point point = node1->convertToWorldSpace(node2->getPosition());
上面的代码将把node2的坐标转换为屏幕上的坐标。例如,如果node1的锚点位置是,它将是node1的左下角,但不一定在屏幕上。这将转换node2的位置(即相对于node1的点的屏幕坐标)。
或者如果您愿意,您可以使用convertToWorldSpaceAR
函数获得相对于场景锚点的位置。
因此,要回答这个问题,必须做出一些假设。我假设你在包含地图的图层上使用Follow动作。例如,请查看这里。比如:
// If your playerNode is the node you want to follow, pass it to the create function.
auto cameraFollowAction = Follow:create(playerNode);
// running the action on the layer that has the game/map on it
mapLayer->runAction(cameraFollowAction);
上面的代码将导致视口"移动"到玩家所在的世界位置。所以在地图上跟随玩家,这比当前视口更大。我在游戏菜单/hud中所做的是将hud添加到不同的图层中,并将其添加到主要游戏场景的根部。没有后续动作的场景。如下所示
// Hud inherits from layer and has all the elements you need on it.
auto inGameHud = HudLayer::create();
// Add the map/game layer to the root of main game scene
this->addChild(mapLayer, 0);
// Add the hud to the root layer
this->addChild(inGameHud, 1);
上面的代码假设'this'是你的MainGameScene。这限制了Follow操作将元素滚动出屏幕。无论你的场景当前在世界空间的哪个位置,你的元素都将出现在屏幕上。
让我知道这是否足够清楚。如果你遇到困难,我可以帮助你。
我已经设法使用视差节点来做到这一点,并使用精灵走向Vec2(0,0)的速度,这样它总是停留在屏幕上的同一位置。
你总是可以把精灵放到不同的节点/层中。这样移动这个图层/节点不会移动精灵
- 如何制作一个只包含字符的简单加载屏幕
- Cout 一个字符串可以打印任何内容到屏幕上
- 它是一个"X",漂浮在输出屏幕上并实时移动
- 直接X 11:在屏幕上绘制一个简单的彩色矩形
- 将25个甚至整数存储到一个名为intlist的整数阵列中,然后在屏幕上显示数组,并在屏幕上显示名为fivintegers
- 从另一个桌面捕获屏幕截图
- 我试图运行OpenGL,但Glut屏幕只是呈现一个白色屏幕
- 我如何在屏幕上打开一个文件c++
- 如何在屏幕上多次复制一个精灵,每个精灵都有相同的代码
- OpenGL,C++,为什么glutReshapeFunc函数给出了一个黑色的OpenGL屏幕
- 如何获得一个循环来在屏幕c++上转换输出
- 如何将顶点位置传递给顶点着色器.我写了一个着色器,它不会在屏幕上绘制任何内容
- GLSL着色:整个屏幕都是彩色的,而不仅仅是一个四边形
- c++linux控制台清除屏幕的一个区域
- MFC PreCreateWindow,用于创建一个填充除任务栏之外的屏幕的窗口
- 如何在一个屏幕中使用两个缓冲区?可能吗?(快板)
- 如何在屏幕底部的栏上为Qt诺基亚添加一个按钮
- 在屏幕上绘制一个像素
- GLUT只是呈现一个空白的白色屏幕
- 问如何正确地做一个屏幕保护程序的功能窗口C++