見出し画像

バーチャルオフィス(gather)でクルクル

テトがいると…

クルクル回りたくなりますよね
でも自分でクルクル回すのはなかなか大変…
なので自動化してみました!

node.jsで自動的にクルクル

node.jsの環境構築は以下の記事をご覧ください

上記の記事でindex.jsを作成しましたが、以下のように書き換えます

const {API_KEY, SPACE, MAP, ID} = require("./api-key");
const {Game} = require("@gathertown/gather-game-client");
global.WebSocket = require("isomorphic-ws");

/**** setup ****/
// what's going on here is better explained in the docs:
// https://gathertown.notion.site/Gather-Websocket-API-bf2d5d4526db412590c3579c36141063
const game = new Game(SPACE, () => Promise.resolve({apiKey: API_KEY}));
// replace with your spaceId of choice ^^^^^^^^^^^
game.connect();
game.subscribeToConnection((connected) => {
    console.log("connected?", connected)
});

/**
 * プレイヤー回転
 * @param steps ステップ数
 * @returns {Promise<void>}
 */
async function movePlayer(steps)
{
    let sleep = 250;
    for (let i = 0; i < steps; i++)
    {
        // 下
        game.move(3, true);
        await new Promise((resolve) => setTimeout(resolve, sleep));
        // 左
        game.move(0, true);
        await new Promise((resolve) => setTimeout(resolve, sleep));
        // 上
        game.move(2, true);
        await new Promise((resolve) => setTimeout(resolve, sleep));
        // 右
        game.move(1, true);
        await new Promise((resolve) => setTimeout(resolve, sleep));
    }
}

// プレイヤーのエモートを読み取る
game.subscribeToEvent("playerSetsEmoteV2", (data, context) => {
    const emote = data.playerSetsEmoteV2.emote;
    switch (emote){
        case "🍸":
            movePlayer(1000).then(() => {});
            break;
    }
});

このスクリプトでは、特定のエモーション(🍸)を行ったときに、1000回転するスクリプトとなります

ちょっと踊ってみたので、動画を作ってみました

皆さんも是非踊ってみてください!


いいなと思ったら応援しよう!

わた
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!

この記事が参加している募集