如题,父节点转动时,子节点世界坐标改变,拖尾角度展示不合预期,怎样定制这部分引擎呢? bear大神给了方向,可是自己尝试修改没有成功,请引擎组给点建议
motion-streak.zip (2.6 KB)
如题,父节点转动时,子节点世界坐标改变,拖尾角度展示不合预期,怎样定制这部分引擎呢? bear大神给了方向,可是自己尝试修改没有成功,请引擎组给点建议
motion-streak.zip (2.6 KB)
111 求助下引擎组
顶一下
help、


有人吗
这里看到了么?取componenet中的points用来计算拖尾,points里面都是世界坐标,改成相对坐标就OK了啊
motionStreak组件里面给个flag,这个flag为true时 points用的是世界坐标,flag为false时 points用相对坐标。相对坐标用comp._points转换一下就可以了
下面时我随便写的,可以参考一下,实际使用你得根据自己项目得需求
//motionStreak组件中增加属性
rotationEnable : {
default : false,
},
//在motion-streaks.js中加一个方法用于转换坐标
covertFunc (comp, points) {
if (comp.rotationEnable) {
return points;
}
this._pointArray = [];
for (let i = 0; i < points.length; i++) {
const element = points[i];
var point = comp.node.parent.convertToNodeSpaceAR(element);
point.rotate(-comp.node.rotate * 180 / Math.PI);
this._pointArray.push(point);
}
return this._pointArray;
},
……
//改motionStreakAssembler中得update方法中points赋值那一段为:
let points = this.covertFunc(comp, comp._points);
写的比较粗糙,但大概是这个意思
谢谢回复!
解决了!
其实把 let matrix = node._worldMatrix;改成 let matrix = node._matrix就是使用local坐标系了,但同时需要把后面的renderdata里的坐标再转回世界坐标。
两处修改见下图:


这个方案不错,我都没仔细看这块的代码,哈哈哈