7.Cocos2d-x中convertToWorldSpace方法的理解及坐标转换的一些方法。

来源:互联网 发布:appstore没法下载软件 编辑:程序博客网 时间:2024/04/29 01:21

1.convertToNodeSpace

CCPoint newPosition=node1->convertToNodeSpace(node2->getPosition());

将node2的位置坐标转换成相对于node1左下角顶点的坐标。转换方法:node1和node2位置不变,将坐标轴原点设置为node1的左下角顶点,重新计算node2->getPosition()这个点的坐标即为newPosition。

2.convertToNodeSpaceAR

CCPoint newPosition=node1->convertToNodeSpaceAR(node2->getPosition());

将node2的位置坐标转换成相对于node1锚点的坐标。转换方法:node1和node2位置不变,将坐标轴原点设置为node1的锚点,重新计算node2->getPosition()这个点的坐标即为newPosition。

3.convertToWorldSpace

CCPoint newPosition=node1->convertToWorldSpace(node2->getPosition());

将node2的位置坐标转换成世界坐标。转换方法:node1的位置不变,世界坐标的坐标轴也不变,以node1的左下角顶点再建立一个坐标系(其实就是本地坐标),将node2->getPosition()这个点设置到新建的坐标系中,以原来的世界坐标系为参考,重新计算node2->getPosition()这个点的坐标即为newPosition。


4.convertToWorldSpaceAR

CCPoint newPosition=node1->convertToWorldSpaceAR(node2->getPosition());

将node2的位置坐标转换成世界坐标。转换方法:node1的位置不变,世界坐标的坐标轴也不变,以node1的锚点再建立一个坐标系,将node2->getPosition()这个点设置到新建的坐标系中,以原来的世界坐标系为参考,重新计算node2->getPosition()这个点的坐标即为newPosition。



运用:

1.计算精灵被多个父容器嵌套包含的时候的世界坐标。

sp->getParent()->convertToWorldSpace(sp->getPosition())即可。因为sp->getPosition()是相对于父容器而言的,所以在碰撞检测等情况下必须将坐标转换成世界坐标进行统一计算。


2.设置被多个父容器嵌套包含的精灵的坐标。

同理,因为sp->getPosition()是相对于父容器而言的,所以在设置坐标的时候需转换成相对于父容器的坐标。

sp->setPosition(sp->getParent()->convertToNodeSpace(要设置的坐标));


0 0
原创粉丝点击