为了账号安全,请及时绑定邮箱和手机立即绑定

在three.js中使用交错动画

在three.js中使用交错动画

沧海一幻觉 2021-12-23 15:15:29
我想为网格数组设置动画,但无法识别属性tl.staggerFrom(array,2,{"position.y":-100})当我使用 console.log(array[0].position.y) 它给出 position.y 的初始值时 position.y 不会改变如何在threejs网格中使用交错动画
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

看起来您正在使用 GSAP (TweenMax),并且该库要求您使用浅层对象作为其动画参数。这意味着您不能为 2+ 级深的变量设置动画;你不能要求它动画array[0].position.y,但你可以要求它动画position.y。考虑到这一点,请考虑以下事项:


// Save reference to all positions into a new array

var allPositions = [];

for (var i = 0; i < array.length; i++) {

    allPositions.push(array[i].position);

}


// Now use the shallower objects to animate the y attribute

tl.staggerFrom(allPositions,2,{y: -100});


查看完整回答
反对 回复 2021-12-23
?
千巷猫影

TA贡献1829条经验 获得超7个赞

我使用代理解决了它我为每个网格创建了一个新的代理实例,并在其设置属性中我只是做我想做的事情并将代理添加到一个数组并交错使用该数组


例如:


for(let i=0;i<5;i++){

    let mesh = new THREE.Mesh(geometry,material);

    let proxy = new Proxy({positionY:null},{

           set(target,key,value){

                    target[key] = value;

                    if(target[key] !== null){

                         mesh.position.y = target.positionY

                    }

                     return true;

                },

                get(target,key){

                    return target[key];

                }

            })

proxy.positionY = 0

aarray.push(proxy)

}

tl.staggerFrom(aarray,5,{positionY:-100})


查看完整回答
反对 回复 2021-12-23
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信