1. 屏幕坐标系:触摸屏幕时的坐标系
Y
2. OpenGL坐标系:使用OpenGL坐标系就可以了
3. 世界坐标系:游戏里面公用的坐标系(绝对坐标系)
4. 本地坐标系:物体本身的坐标系统
5. 锚点
6. 坐标系转换
Director::convertToGL(CCPoint);//将屏幕坐标转换成OpenGL坐标系统
Director::convertToUI(CCPoint);//将OpenGL转换成屏幕坐标
Cocos2D已经给予了各种转换方式,只需要调用就行
Sprite* mysprite1 = Sprite::create("CloseNormal.png"); mysprite1->setPosition(ccp(20,40)); mysprite1->setAnchorPoint(ccp(0, 0)); this->addChild(mysprite1); Sprite* mysprite2 = Sprite::create("CloseNormal.png"); mysprite2->setPosition(ccp(-5,-20)); mysprite2->setAnchorPoint(ccp(1, 1)); this->addChild(mysprite2); //mysprite2 相对于1 的相对坐标, CCPoint point1 = mysprite1->convertToNodeSpace(mysprite2->getPosition()); //2 相对于 1的世界坐标,把1 当做世界坐标,然后把2的坐标放过来, //但是最后得到的坐标是 大的世界坐标 CCPoint point2 = mysprite1->convertToWorldSpace(mysprite2->getPosition()); //把锚点作为坐标原点 CCPoint point3 = mysprite1->convertToNodeSpaceAR(mysprite2->getPosition()); //把锚点做为坐标原点 CCPoint point4 = mysprite1->convertToWorldSpaceAR(mysprite2->getPosition()); CCLOG("position = (%f,%f)", point1.x, point1.y); CCLOG("position = (%f,%f)", point2.x, point2.y); CCLOG("position = (%f,%f)", point3.x, point3.y); CCLOG("position = (%f,%f)", point4.x, point4.y);
这些坐标转换,用的不是很多,但是需要了解呢
7. 逻辑数值与真实数值
//逻辑值 //获取的是原始的值 getContentSize(); getPosition(); //真实值 getBoundingBox(); //缩放因子 CCDirector::setContentScaleFactor(1.0f); CCDirector::getContentScaleFactor();