我想将触摸位置转换为我的平铺游戏中的世界坐标。使用此代码,我点击屏幕右侧(以便我的角色走进平铺游戏,背景慢慢向左):
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
for( UITouch *touch in touches ) {
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL: location];
CGPoint test = [self convertToWorldSpace:location];
CCLOG(@"test : %.2g", test.x);
test
日志给了我:
50,72,1e + 02,6.6e + 02,4.2e + 02,(然后下降)3.2e + 02,9.5,-1.9e + 02等
有谁知道为什么? 我想计算触摸的“真实”坐标,以便我知道角色何时必须继续前进(点击其实际位置的右侧)或者他是否必须转身去向后。 (点击其实际位置的左侧)
感谢您的帮助
答案 0 :(得分:1)
这些打印的数字看起来不错,但您使用%g
格式说明符,根据Apple's documentation对此主题进行说明:
64位浮点数(double),如果指数小于-4或大于或等于精度,则以%e的样式打印,否则为%f的样式。
除非那是你想要的,否则你应该使用%f
代替,这不会产生科学记数法中的任何数字。
答案 1 :(得分:1)
您使用cocos2d所做的一切,都是在单个OpenGL视图中完成的。因此,如果您处理场景或具有场景大小的图层的触摸,则调用这些线
就足够了 CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL: location];
将触摸位置重新连接到屏幕上。 convertToWorldSpace
只是将本地节点坐标转换为世界坐标