您的位置:首页 > Web前端 > Node.js

convertToNodeSpace和convertToWorldSpace

2016-03-09 00:00 597 查看
摘要: cocos

auto *sprite1 = Sprite::create("HelloWorld.png");
sprite1->setPosition(ccp(20,40));
sprite1->setAnchorPoint(ccp(0,0));
this->addChild(sprite1);  //此时添加到的是世界坐标系,也就是OpenGL坐标系
auto *sprite2 = Sprite::create("HelloWorld.png");
sprite2->setPosition(ccp(-5,-20));
sprite2->setAnchorPoint(ccp(1,1));
this->addChild(sprite2); //此时添加到的是世界坐标系,也就是OpenGL坐标系
//将 sprite2 这个节点的坐标ccp(-5,-20) 转换为 sprite1节点 下的本地(节点)坐标系统的 位置坐标
Point point1 = sprite1->convertToNodeSpace(sprite2->getPosition());
//将 sprite2 这个节点的坐标ccp(-5,-20) 转换为 sprite1节点 下的世界坐标系统的 位置坐标
Point point2 = sprite1->convertToWorldSpace(sprite2->getPosition());
log("position = (%f,%f)",point1.x,point1.y);
log("position = (%f,%f)",point2.x,point2.y);

这是文档中的例子,一开始我没看明白....后来我把问题简便化了.....

对于point1

Point point1 = sprite1->convertToNodeSpace(sprite2->getPosition());

不要被官方文档中的解释弄混了头脑,此处的参数直接理解成世界坐标系中的坐标

ccp(-5,-20)

再理解成为sprite1本地坐标系下的坐标,sprite1的AP点在(0,0),因此得到point1的本地坐标(相对于sprite1)

(-25.000000,-60.000000)

对于point2

Point point2 = sprite1->convertToWorldSpace(sprite2->getPosition());

将函数中的参数直接理解为sprite1本地坐标系中的坐标,sprite1的AP点在(0,0)

ccp(-5,-20)

找到这个点之后,计算其在世界坐标系下的坐标,很容易得到

(15.000000,20.000000)


要理解这个其实很简单。

1/知道世界坐标系和本地坐标系

2/知道AP点

3/

convertToWorldSpace

中的参数为本地坐标系的坐标

convertToNodeSpace

中的参数为世界坐标系的坐标
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: