Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Cocos2d坐标系_Iphone_Ios_Cocos2d Iphone_Drawing - Fatal编程技术网

Iphone Cocos2d坐标系

Iphone Cocos2d坐标系,iphone,ios,cocos2d-iphone,drawing,Iphone,Ios,Cocos2d Iphone,Drawing,在cocos2d中,坐标系非常简单。。左下角是(0,0)。 无论何时我设定任何东西的位置,它都是好的 假设某个层已启用触摸功能 当我设置雪碧的位置时,没关系 [crab setPosition:ccp(20, 50)]; 但是如果我得到触摸的x和y坐标(假设我点击了精灵…): y坐标与cocos2d坐标系的建议相反,因为y从上到下增加 因此,我假设视图的坐标系与mac的坐标系不同。。这是完全违反直觉的。。对吗 谢谢 本cocos2d教程可能会对您有所帮助 但一般来说,在cocos2d中,点(

在cocos2d中,坐标系非常简单。。左下角是(0,0)。 无论何时我设定任何东西的位置,它都是好的

假设某个层已启用触摸功能

当我设置雪碧的位置时,没关系

[crab setPosition:ccp(20, 50)];
但是如果我得到触摸的x和y坐标(假设我点击了精灵…):

y坐标与cocos2d坐标系的建议相反,因为y从上到下增加

因此,我假设视图的坐标系与mac的坐标系不同。。这是完全违反直觉的。。对吗


谢谢

本cocos2d教程可能会对您有所帮助


但一般来说,在cocos2d中,点(0,0)是屏幕的左角

cocos2d已经可以为您处理此问题。中央控制中心主任对此有一些方法。请看一看这个老版本。

通常,对于大多数与图形相关的应用程序,都倾向于将(0,0)放在左下角(Mac就是这种情况)-在iOS上,正如您所注意到的,它位于左上角

当您使用Cocos处理输入时,您可以使用convertouchtonodespace方法快速转换它(至少使用1.x-我还没有充分使用2.0-但我相信通过快速查看文档,它是convertonodespace)。然后,这将进行必要的转换,以获得正确的坐标


(注意:我需要挖掘一些我的其他代码来仔细检查-但我记不清这是否也计算了相机偏移量-我会在获得演示代码并确认后进行编辑。)

触摸来自UIKit,左上角为(0,0)因此,在处理此数据之前,需要将其转换为cocos2d的坐标系

[[CCDirector sharedDirector] convertToGL];
对于UIkit->cocos2d

OpenGL使用左下角的(0,0),而iOS和处理触摸的UIkit使用左上角的(0,0)。把你的观点转换过来是很容易的,你只要记住去做就行了

COCOS2D2.0上的正确方法是

CGPoint uiKitPoint = [touch locationInView:touch.view];
CGPoint cocos2dPoint = [[CCDirector sharedDirector] convertToGL:uiKitPoint];

convertToNodeSpace将不在当前节点坐标系中的点转换为自身。例如,将世界坐标(但仍为openGL格式)添加到节点坐标系。通过添加converttogl方法更新我的答案仍然不正确。转换为节点空间不适用于uikit点
CGPoint uiKitPoint = [touch locationInView:touch.view];
CGPoint cocos2dPoint = [[CCDirector sharedDirector] convertToGL:uiKitPoint];