three.js-结合gsap动画库,给我们的盒子添加旋转_移动动画

在这里插入图片描述

gitee 地址

gitee地址: gittee地址

本篇目标

  • 结合gsap动画库,添加动画使我们的盒子更加顺畅的移动和旋转

gsap介绍

gsap是一款以javascript实现方式实现的动画库。
gsap有很多的Api我这里就不做详细的解释了,大家可以去看官方文档,我这里把文档给摆出来。
文档:

相信同时点击了中文文档和英文文档的同学,有点纳闷,这两个名字不一样啊。其实是没关系的,这两个是一个子集关系,都是一样的。大家放心看吧。

下载gsap

// npm
npm i gsap -s
// pnpm
pnpm i gsap -s
// yarn
yarn add gsap

在项目中使用gsap动画库

在项目中引入gsap

// 引入 gsap 动画库
import gsap from "gsap"

添加动画

我们先让我们的动画像 x 轴移动

// 添加动画
gsap.to(
    cube.position, // 需要执行动画的参数对象
    {
    
    // 执行动画的目标参数
        x: 10, // 使盒子移动到 x 轴为 5 的位置
        duration: 5, // 需要的时间,5秒
    }
)

这样过后我们的盒子就会在 x 轴向右移动到 10 的位置但它只会执行一次,我们怎么样让他多执行几次呢,或者无限执行,再或者一直往返运动
添加动画执行次数

// 添加动画
gsap.to(
    cube.position, // 需要执行动画的参数对象
    {
    
    // 执行动画的目标参数
        x: 10, // 使盒子移动到 x 轴为 5 的位置
        duration: 5, // 需要的时间,5秒
        repeat: 2,//动画执行次数,当执行次数为 -1 时,则无限次数执行
    }
)

添加往返执行

// 添加动画
gsap.to(
    cube.position, // 需要执行动画的参数对象
    {
    
    // 执行动画的目标参数
        x: 10, // 使盒子移动到 x 轴为 5 的位置
        duration: 5, // 需要的时间,5秒
        repeat: 2,//动画执行次数
        yoyo: true, // 添加往返执行
    }
)

现在我们的盒子就可以以堪称完美的动画效果执行了,但我们发现它在执行的过程中一直是同一个速度,没有抛物线的那种看着更加完美的执行动画,让我门给它加个抛物线性的动画效果。
先慢-> 快 -> 慢

// 添加动画
gsap.to(
    cube.position, // 需要执行动画的目标对象
    {
    
    // 执行动画的目标参数
        x: 10, // 使盒子移动到 x 轴为 5 的位置
        duration: 5, // 需要的时间,5秒
        ease: 'power1.inOut', // 动画执行方式
        repeat: 2,//动画执行次数,当执行次数为 -1 时,则无限次数执行
        yoyo: true, // 添加往返执行
    }
)

好了,搞定,现在看起来就很nice了。只有向 x 轴移动,不咋滴,我们给他添加一个旋转。
有了上面的移动案例,我门支持 copy 修改成旋转的 目对象

// 添加动画-旋转
gsap.to(
    cube.rotation, // 需要执行动画的目标对象
    {
    
    // 执行动画的目标参数
        x: 10, // 使盒子移动到 x 轴为 5 的位置
        duration: 5, // 需要的时间,5秒
        ease: 'power1.inOut', // 动画执行方式
        repeat: 2,//动画执行次数,当执行次数为 -1 时,则无限次数执行
        yoyo: true, // 添加往返执行
    }
)

让我们来一起看看我们刚刚一顿猛如虎操作的效果:
在这里插入图片描述

提前预告

实现画布的响应式,根据屏幕尺寸自适应

所有操作实现案例均以上传gitee,地址在文章开篇处。

猜你喜欢

转载自blog.csdn.net/qq_44500360/article/details/128200353