tweenjs+threejs 多个动画依次执行

1.使用场景:当小车自动驾驶时,会由多条路线依次驶过,而tweenjs动画是链式函数执行

let myTwen = new TWEEN.Tween(position);  //position格式 :{x:x,y:y}
   myTwen.to(
      {
        x: geometryGroup[1][0],
        y: geometryGroup[1][1],
      },
      7000
    )
    .onUpdate((pos) => {
      console.log("移动点坐标", pos);
      plane2.position.set(pos.x, pos.y);
    })
    .onComplete(() => console.log("finish"))
    .start();

上面这种写法就只能实现只有一段路的情况,不适用于多条线路的依次执行动画;
改写后:

  const animationCar = (geometryGroup) => {
    if (geometryGroup.length > 1) {
      new TWEEN.Tween(mesh.position)
        .to(
          {
            x: Number(geometryGroup[1][0]),
            y: Number(geometryGroup[1][1]),
          },
          5500
        )
        .easing(TWEEN.Easing.Linear.None)
        .onUpdate(function () {})
        .onComplete(function () {
          mesh.position.set(Number(geometryGroup[1][0]), Number(geometryGroup[1][1]));
          geometryGroup.shift();
          animationCar(geometryGroup);
        })
        .start();
    }
  };

PS:也可以使用定时器实现,一定时间改变起点终点位置,
为了更好的视觉效果,时间可以改成动态的,由距离去计算时间;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值