如何添加始终在Cocos2d屏幕上的精灵? P>我用C++中的COCOS2D-X V3做了一个Palfter游戏,其中的地图通常很大,可见屏幕通过地图跟随对象。< /P>

如何添加始终在Cocos2d屏幕上的精灵? P>我用C++中的COCOS2D-X V3做了一个Palfter游戏,其中的地图通常很大,可见屏幕通过地图跟随对象。< /P>,c++,cocos2d-x,cocos2d-x-3.0,C++,Cocos2d X,Cocos2d X 3.0,假设我想在屏幕的右上角显示一个精灵,即使屏幕跟随对象,它也会在这个位置 使用对象位置并不能做到这一点 有没有办法在屏幕上显示精灵或其他东西,即使屏幕在移动,它也会出现在屏幕上 另外,我是游戏开发方面的超级高手如文所述,您可以使用convertToWorldSpace convertToWorldSpace将节点坐标转换为屏幕坐标。convertToWorldSpace将始终返回精灵的屏幕位置,如果您希望捕捉精灵上的点击,但需要移动/缩放图层,则可能非常有用。 通常,父节点使用子节点位置调用此方法

假设我想在屏幕的右上角显示一个精灵,即使屏幕跟随对象,它也会在这个位置

使用对象位置并不能做到这一点

有没有办法在屏幕上显示精灵或其他东西,即使屏幕在移动,它也会出现在屏幕上

另外,我是游戏开发方面的超级高手

如文所述,您可以使用
convertToWorldSpace

convertToWorldSpace
将节点坐标转换为屏幕坐标。convertToWorldSpace将始终返回精灵的屏幕位置,如果您希望捕捉精灵上的点击,但需要移动/缩放图层,则可能非常有用。 通常,父节点使用子节点位置调用此方法,结果返回子节点的世界位置。如果调用方不是父对象,则调用此方法似乎没有意义

如你所知

Point point = node1->convertToWorldSpace(node2->getPosition()); 
上述代码将节点2的坐标转换为屏幕上的坐标。 例如,如果node1的锚定位置为,则将是node1的左下角,但不一定在屏幕上。这将转换节点2的位置,即相对于节点1的点的屏幕坐标


或者,如果您愿意,您可以使用函数
convertToWorldSpaceAR

获得相对于场景锚定点的位置,因此必须做出一些假设才能回答此问题。我假设您正在包含地图的图层上使用后续操作。例如,检查。比如:

// 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);
上面的代码假设“这”是你的主要游戏场景。这限制了从屏幕上滚动元素的后续操作。无论场景当前位于世界空间的何处,元素都将显示在屏幕上


让我知道这是否足够清楚。如果你被卡住了,我可以帮你更多。

我已经设法使用视差节点,并使用精灵进入Vec2(0,0)的速度,这样它在屏幕上始终保持在同一个位置。

你总是可以将精灵放在其他所有东西所在的不同节点/层中。这样,移动此层/节点不会移动精灵

,这是一种非常迂回的方法。这有内置的功能。但是如果它对你有用:)当你开始为其他平台进行优化时,请记住其他选项。这是错误的。convertToWorldSpace返回坐标,不将节点添加到世界空间。