
拖拽的时候改变这个的值
改这个值的话,并不能实时调整节点的坐标。
如果在tween的update中修改的话,还是需要计算很多坐标。
而且.to和.by混用的情况下,就更复杂了。
let isUp = true;
let totalMoveY = 0;
this.schedule((time) => {
let moveY = time * 200;
if (isUp) {
node.position.y += moveY;
totalMoveY += moveY;
if (totalMoveY >= 200) {
node.position.y -= (totalMoveY - 200);
isUp = false;
totalMoveY = 0;
}
} else {
node.position.y -= moveY;
totalMoveY += moveY;
if (totalMoveY >= 200) {
node.position.y += (totalMoveY - 200);
isUp = true;
totalMoveY = 0;
}
}
}); tween用 schedule 效果实现也很简单吧.试着写了下实现的方式,这样一来不管node 如何通过其它的方式上下左右调整位置,这个函数应该都会固定地根据原来的动画上下移动200像素
let psX = this.node.position.x
let psY = this.node.position.y
tween(this.node)
.to(1, { position: new Vec3(psX += 5, psY += 5, 0) })
.to(1, { position: new Vec3(psX -= 5, psY -= 5, 0) })
.union()
.repeatForever()
.start()
我测试的结果是这样写能改变他的position
这样确实可以,和前面提到的 “创建一个变量x, tween对x进行0-1的变化” 方案差不多是一个意思。
都是使用第三方变量来控制,能用就行,我先就这么用着。
感谢各位大佬解惑,已经有了折中方案,先用着了。

tween的是本地坐标,拖动的是它父节点,这样毫无影响,
