我正在尝试做的事情:将我触摸屏幕的坐标放入 2 个浮点数 x 和 y 中。
我的理解是,要获得我正在触摸的位置的坐标,我应该使用 getLocation()。所以我写了一小段代码:
CCTouch *pTouch;
CCPoint *xy = pTouch->getLocation();
我如何理解它(这很可能是错误的),这应该将变量 xy 设置为等于触摸屏幕位置的 opengl 坐标。如果是这种情况,我将如何将此 CCPoint 变量转换为一个或两个浮点数(x 和 y 浮点值)?
这是你可以做的。在场景类的 init() 函数中添加调用
setTouchEnabled( true );
告诉 cocos2d-x 通过在场景中适当调用 ccTouchBegan、ccTouchMoved、ccTouchCancelled 和 ccTouchEnded 来告诉你触摸事件。现在,当这些函数被调用时,你会得到一个
cocos2d::CCTouch *touch
您可以使用它来获取触摸坐标。我在游戏中所做的是
CCPoint p = touch->getLocationInView();
p = CCDirector::sharedDirector()->convertToGL(p);
p 将包含触摸的坐标。您可以通过执行获取触摸的 x 和 y 坐标的浮点值
float x = p.x;
float y = p.y;
希望有帮助。:)
尝试这个:
float x,y;
x = *xy->x;
y = *xy->y;
PS:getLocationInView()
比较推荐使用,因为这个函数会返回屏幕坐标中的位置,这是cocos2d-x主要使用的。以后不需要将 OpenGL 坐标转换为屏幕坐标。
读:
http://www.cocos2d-x.org/reference/native-cpp/de/d9b/classcocos2d_1_1_c_c_touch.html