0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PlayCanvasでLottieを使ったローディングスクリーンを作る

Posted at

Lottie - (LottieFiles)を利用して動的なロード画面をPlayCanvasで作成する方法となります。

実行URL: https://playcanv.as/b/c9f69d9d

1. External Scriptからスクリプトを読み込む

CDNからスクリプトファイルを読み込みます。
最新のバージョンはこちらからご確認ください。

https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.9.6/lottie.min.js

2. 「SETTINGS」 → 「EXTERNAL SCRIPT」にスクリプトのURLを設定

スクリーンショット 2022-10-19 11.46.05.png

3. 「SETTINGS」 →「LOADING SCREEN」からローディングスクリーンを作成

「CREATE LOADING SCREEN」から新規にロード画面を作成します。
ファイル名はcustom-loading.jsなどとして置きます。
スクリーンショット 2022-10-19 11.48.09.png

4. ローディングスクリーンを書き換え

ロード画面のテンプレートが作成されておりますが、そちらの中身を下記のスクリプトに書き換えます。

// custom-loading.js
pc.script.createLoadingScreen((app) => {
    // アニメーション用の要素を作成
    const wrapper = document.createElement('div');
    wrapper.style.position = "absolute";
    wrapper.style.background = "#fff";
    wrapper.style.width = "100vw";
    wrapper.style.height = "100vh";
    wrapper.id = 'application-splash-wrapper';
    document.body.appendChild(wrapper);

    const lottieAnimation = lottie.loadAnimation({
        container: wrapper,
        name: "loading",
        loop: false, // ループしない
        autoplay: false, // 自動再生をしない
        path: "https://assets7.lottiefiles.com/packages/lf20_gapacy3r.json", // アニメーションデータのURL
    });


    // progress - 0.0 - 1.0の値
    app.on('preload:progress', (progress) => {
        lottieAnimation.goToAndStop(progress * lottieAnimation.timeCompleted, true);
    });

    app.once('preload:end', () => {
        app.off('preload:progress');
    });

    // アプリケーションのフレームが始まった場合にローディング画面を削除
    app.once('start', () => {
        const splash = document.getElementById('application-splash-wrapper');
        splash.parentElement.removeChild(splash);
    });
});

これでロード画面にLottieを利用する事ができます。

自分で作ったアニメーション / 公開されているアニメーションを変更する

Lottieで作成したアニメーションをコピーし.json形式のアニメーションファイルのURLをコピーします。
スクリーンショット 2022-10-19 11.55.15.png

次にロード画面のスクリプト(custom-loading.js)を書きえます。

   const lottieAnimation = lottie.loadAnimation({
        container: wrapper,
        name: "loading",
        loop: false, // ループしない
        autoplay: false, // 自動再生をしない
        path: "コピーしたURL"
    });

これで任意のアニメーションを利用することができます。
今回は、自動再生をせずに、ロードの状況に合わせてプログレスバーを進めています。
ループするアニメーションなどの場合は、loadAnimationloop,autoplaytrueにすることでループしたアニメーションを再生できます。

参考: loadAnimation options

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?