cocos 世界坐标与相对坐标的转换

  • Post author:
  • Post category:其他


  1. cocos 提供4个坐标转换的方法

    convertToNodeSpace

    convertToWorldSpace

    convertToNodeSpaceAR

    convertToWorldSpaceAR



黄颜色坐标为世界坐标,棕色坐标为相对坐标


convertToWorldSpace

	var w_pos = this.node.convertToWorldSpace(cc.v2(0,0));
	cc.log(w_pos);
	//输出结果为:(430,270)
	this.node 指向当前红色方块,
	已当前红色方块为坐标参考,也就是按棕色的坐标为参考(以该节点的左下角为坐标原点),
	棕色坐标的(00)点 在世界坐标的什么位置。
	也就是红色方块左下角的世界坐标
	画布宽为960960/2-50(红色方块宽的一半)= 430
	画布高为640640/2-50(红色方块高的一半)= 270
	convertToWorldSpace,输出的结果为世界坐标,输入参数为节点坐标。


convertToWorldSpaceAR


在这里插入图片描述

var w_pos = this.node.convertToWorldSpaceAR(cc.v2(0,0));
cc.log(w_pos);
//输出结果为:(480,320)
该方法和上一个方法区别在于多了AR,有AR是以该节点的锚点为坐标原点,如图棕色箭头所指的点。
上面方法的解释:
	//以该节点为坐标参考,并以该节点的锚点为坐标原点,求该节点的原点(cc.v2(0,0))位置在世界坐标(黄颜色的坐标)的位置。
	//在棕色坐标的位置,转为在黄色坐标的位置。参数输入棕色坐标的值。输出黄色坐标的值。


convertToNodeSpace

var w_pos = this.node.convertToNodeSpace(cc.v2(480,320));
cc.log(w_pos);
//输出结果为:(50,50)
//cc.v2(480,320) 为世界坐标中心点
//该方法没有AR是以红色方块左下角为原点,红色方块的中心点距离原点为(50,50)


convertToNodeSpaceAR

var w_pos = this.node.convertToNodeSpaceAR(cc.v2(480,320));
cc.log(w_pos);
//输出结果为:(0,0)
//cc.v2(480,320) 为世界坐标中心点
//该方法有AR,是以该节点的锚点为原点
//红色方块的锚点,也是世界坐标的中心点



总结

  • 没AR — 是以当前node的左下角为原点
  • 有AR– 是以当前node的锚点为原点
  • node –(参数:世界坐标)将世界坐标转换为节点相对坐标
  • world–(参数:节点坐标)将节点坐标系下的一个点转换到世界空间坐标系

以上为个人学习记录,如有问题可在评论中提出。



版权声明:本文为m0_56414330原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。