【问题标题】:How to get the current position of my screen in Cocos2d?如何在 Cocos2d 中获取我屏幕的当前位置?
【发布时间】:2015-10-22 16:52:28
【问题描述】:

我正在使用 c++ 中的 cocos2d-x v3 做一个平台游戏,其中地图通常非常大,可见屏幕通过地图跟随对象但我找不到获取可见位置的方法地图中的屏幕。

使用 Size visibleSize = Director::getInstance()->getVisibleSize();给我整个地图的尺寸​​。

假设我想在对象到达地图中的某个点时在屏幕的右上角显示一个精灵,并且这个精灵将始终在屏幕的右上角。

使用对象位置不行。

有没有办法获取当前屏幕的位置? 或者有没有办法在屏幕上显示精灵或其他任何东西,即使屏幕在移动,它也会在屏幕上?

附言。我是游戏开发的超级菜鸟

【问题讨论】:

    标签: cocos2d-x cocos2d-x-3.0


    【解决方案1】:

    有一个简单的解决方法:

    你需要两层: 1:游戏层 2:界面层

    Gamelayer是您可以移动的。您的地图添加到gamelayer上,当您需要移动地图时,您可以移动gamelayer。

    uilayer不动,zorder大于gamelayer。应该始终在屏幕右上角的精灵在这一层上。

    还有: 还有一种更复杂的方式: 你不需要移动游戏层。只需将一个摄像头绑定到游戏层,然后将另一个摄像头绑定到 uilayer。

    当您需要查看大地图的其余部分时,只需将游戏玩家的相机移动到您想要的位置即可。

    顺便说一句:

    这是我在stackoverflow上的第一个答案。

    英语不是我的母语,不是很流利。

    希望对你有帮助:)

    【讨论】:

    • 谢谢,这是个好主意,我会尽快尝试。顺便说一句:良好的英语有小错误“你没有”是错误的,(你做到了,他/她/它做到了)
    • 另外,你能帮我写一些代码吗?我在我的场景中创建了 2 个图层(auto layer = HelloWorld::create(); scene->addChild(layer); //first layer.auto layer1 = HelloWorld::create(); scene->addChild(layer1) ; //第二层。)当我测试它时,我注意到一切都是重复的。如何定义每一层中的对象?
    【解决方案2】:

    我为您回答了this 问题,这是当前问题的副本。完全相同的解决方案适用于这两种情况。如this 问题中所述,将您的精灵添加到 HudLayer。

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多