0

我想在我的瓷砖游戏中将触摸位置转换为世界坐标。使用这段代码,我点击了屏幕的右侧(这样我的角色在平铺游戏中行走,背景慢慢向左移动):

- (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, 2.6e+02, 4.2e+02, (然后下降) 3.2e+02, 9.5, -1.9e+02 等

有谁知道为什么?我想计算触摸的“真实”坐标,以便我知道角色何时必须继续前进(单击其实际位置的右侧)或者他是否必须转身并向后走。(点击其实际位置左侧

谢谢你的帮助

4

2 回答 2

1

打印的这些数字看起来不错,但是您使用的是%g格式说明符,根据Apple关于该主题的文档,它执行以下操作:

64 位浮点数 (double),如果指数小于 –4 或大于或等于精度,则以 %e 的样式打印,否则以 %f 的样式打印。

除非那是您想要的,否则您可能应该%f改用它,它不会产生任何科学计数法的数字。

于 2012-06-25T04:35:21.283 回答
1

您使用 cocos2d 所做的一切,都是在单个 OpenGL 视图中进行的。因此,如果您通过场景或具有场景大小的图层来处理触摸,则调用这些线就足够了

    CGPoint location = [touch locationInView: [touch view]];
    location = [[CCDirector sharedDirector] convertToGL: location];

获得相对于您的屏幕的触摸位置。convertToWorldSpace只是将本地节点坐标转换为世界坐标

于 2012-06-25T10:00:10.580 回答