【发布时间】:2014-08-14 00:54:37
【问题描述】:
我在桌面上使用EventListenerMouse 处理来自用户的输入,在移动设备上使用EventListenerTouchOneByOne。他们工作得很好。
记录的坐标是相对于屏幕坐标的。文档here 描述了如何将它们转换为游戏坐标。
但是,它似乎并不关心屏幕缩放。例如,如果我在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();
【问题讨论】: