将屏幕坐标转换为游戏坐标
Convert screen coordinates to game coordinates
我使用EventListenerMouse
处理来自用户的输入,EventListenerTouchOneByOne
用于移动设备。
记录的坐标是相对于屏幕坐标的。这里的文档描述了如何将它们转换为游戏中的坐标。
然而,它似乎并不关心屏幕缩放。例如,如果我在AppDelegate
中设置了如下的设计分辨率:
glview->setDesignResolutionSize(1280, 720, ResolutionPolicy::FIXED_WIDTH);
让我们假设,在运行时,游戏在不同分辨率的设备上运行:
if(!glview)
{
glview = GLView::createWithRect("My Game", Rect(0, 0, 800, 450));
director->setOpenGLView(glview);
}
现在,捕获的触摸/鼠标坐标将相对于屏幕(800x450)。我如何将它们转换成游戏坐标(1280x720)?cocos2d-x是否支持光线拾取等?编辑:现在,这是我正在做的,以绕过它。
point = convertToNodeSpace(point);
auto director = Director::getInstance();
auto view = director->getOpenGLView();
point.x /= view->getScaleX();
point.y /= view->getScaleY();
在你的AppDelegate.cpp中,只需添加以下代码:
glview -> setDesignResolutionSize(1280、720、ResolutionPolicy:: SHOW_ALL);
现在设备分辨率不重要了。导演将为所有设备设置上述分辨率。
相关文章:
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 在C++游戏中与库存系统作斗争
- 换位表导致测试失败(但在游戏中运行良好)
- Craps游戏问题,忽略if语句
- 矢量下标超出SFML游戏中的范围
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- 我应该在简单的策略游戏中为各个派系使用类吗 - C++
- 游戏体验和升级
- 我的代码运行良好,但在游戏循环中中断
- 如何使用 SFML 在贪吃蛇游戏中定义游戏结束?
- 我可以使用任何好的逻辑来阻止计算机将 O 放在井字游戏中的现有 X 上
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- 在我的小行星游戏中,我无法在x坐标上移动我的飞船
- 游戏 - 计算两个坐标之间的距离
- 将屏幕坐标转换为游戏坐标
- 如何在使用glm::ortho的2d游戏中将像素坐标转换为opengl坐标
- 战舰游戏-随机坐标c++