cocoscreator开发踩坑--坐标转换,将C转换为A的子节点

cocoscreator开发踩坑–坐标转换,将C转换为A的子节点

文章目录

  • cocoscreator开发踩坑--坐标转换,将C转换为A的子节点
    • 问题描述
    • 解决方式
    • 函数封装
    • 官方api解释
      • convertToWorldSpaceAR
      • convertToNodeSpaceAR
    • 联系方式

问题描述

将C转换为A的子节点,中间的坐标转换问题

下面是我遇到的情况:

A节点包含B节点,B节点包含C节点
C是B的子节点,B是A的子节点(A是爷爷,B是爸爸,C是孙子)

当然A和B可以没有任何关系

解决方式

当把C节点的父节点改成A节点时,可以使用下面代码

var vecByThisInTheWorld =B.convertToWorldSpaceAR(C.getPosition());
var newVec2 = A.convertToNodeSpaceAR(vecByThisInTheWorld);
C.x = newVec2.x;
C.y = newVec2.y;
C.parent = A;

函数封装

// 调用
this.changePoint(A, C.parent, C);
changePoint(A, B, C) {
	var vecByThisInTheWorld = C.parent.convertToWorldSpaceAR(C.getPosition());
	var newVec2 = A.convertToNodeSpaceAR(vecByThisInTheWorld);
	C.x = newVec2.x;
	C.y = newVec2.y;
	C.parent = A;
},

官方api解释

convertToWorldSpaceAR

将节点坐标系下的一个点转换到世界空间坐标系。

这里是将B下面的C位置转换成世界坐标,返回的是一个点 vecByThisInTheWorld(x,y)

convertToNodeSpaceAR

将一个点转换到节点 (局部) 空间坐标系,这个坐标系以锚点为原点。

这里需要是将 某个点的世界坐标 转换成 某个节点的局部坐标系坐标–>

这里需要是将 C的世界坐标vecByThisInTheWorld(x,y) 转换成 A的局部坐标系 坐标newVec2(x,y)

联系方式

有问题或者有错误欢迎联系我呢

qq群:978460362 (cocos-creator开发交流群)

微信公众号:小王老店/lizhaoblog

你可能感兴趣的:(cocos,create,微信小游戏)