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

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

问题描述

将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

©️2020 CSDN 皮肤主题: 像素格子 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值