あなたの世界を作りなさい
ユーザーインターフェース
ジャイロセンサーの活用
7分
zepeto worldを作成する際、デバイスの傾きに応じてさまざまなワールドプレイのアイデアを実装するためにジャイロセンサーを使用できます。このガイドでは、zepetoscript内でinput gyroを活用する方法を示します。 📘 ジャイロスコープ https //docs unity3d com/scriptreference/gyroscope html https //docs unity3d com/scriptreference/gyroscope html オブジェクトの設定 1\) 階層に追加 > \[+] > 3dオブジェクト > 球体オブジェクトをシーンに追加します。 2\) オブジェクトの名前をballに変更し、rigidbodyコンポーネントを追加します。 スクリプトを書く 1\) typescriptを追加し、スクリプトの名前をrollingballに変更します。 以下のようにサンプルスクリプトを書いてください。 import { zepetoscriptbehaviour } from 'zepeto script'; import { input, systeminfo, vector3, rigidbody } from 'unityengine'; import { text } from 'unityengine ui'; export default class rollingball extends zepetoscriptbehaviour { public debugtext text; public velocitymultiplier number = 100; private rollingball rigidbody; start() { // このスクリプトと同じgameobjectにアタッチされたrigidbodyコンポーネントを取得 this rollingball = this getcomponent\<rigidbody>(); // デバイスがジャイロスコープをサポートしているか確認 if (systeminfo supportsgyroscope) { // ジャイロスコープを有効にする input gyro enabled = true; } else { // ジャイロスコープがサポートされていない場合はスクリプトを無効にする console log("このデバイスではジャイロスコープがサポートされていません。"); input gyro enabled = false; } } update() { // 入力デバイスのジャイロスコープが有効か確認 if (input gyro enabled) { // x軸とz軸に沿ったジャイロ値を読み取る // ボールオブジェクトの安定した動きのために小数点以下1桁に丸める let gyrovaluex = math round(input gyro gravity x 10) / 10; let gyrovaluez = math round(input gyro gravity y 10) / 10; // ジャイロ値を使ってボールの速度を設定 this rollingball velocity = new vector3(gyrovaluex this velocitymultiplier, 0, gyrovaluez this velocitymultiplier); // 現在のジャイロ値を画面に表示 this debugtext text = "input gyro gravity " + input gyro gravity tostring(); } } } スクリプトの説明 ボールオブジェクトに付属しているrigidbodyコンポーネントを取得します。 次の値を丸めます: input gyro gravity x と input gyro gravity z の値を取得して、gyrovaluex、gyrovaluezの値を得ます。 ボールオブジェクトに速度を与えるために、gyrovaluexとgyrovaluezの値をvelocitymultiplierで掛け算して、 velocity に代入します。 その input gyro gravity の値は、text uiを通じて画面に表示されます。 📘 ジャイロスコープ gravity https //docs unity3d com/scriptreference/gyroscope gravity html https //docs unity3d com/scriptreference/gyroscope gravity html 2\) あなたが書いたrollingball zepetoscriptをボールオブジェクトに追加します。 ヒエラルキーウィンドウで、zepetoscriptインスペクタウィンドウに表示されるプロパティにtext uiをドラッグアンドドロップして接続します。 モバイルでのテスト 1\) qrモバイルテストで例の世界を実行します。 2\) ボールオブジェクトはデバイスの傾きに応じて動きます。 ❗️ 注意 ご注意ください、 input gyro はモバイル環境でのみ動作します。 例の適用 input gyroを適用することで、zepetoワールド内でzepetoキャラクターを移動させることができます。 1\) typescriptを追加し、スクリプトの名前をgyromovementに変更します。 以下のようにサンプルスクリプトを書いてください。 import { zepetoscriptbehaviour } from 'zepeto script'; import { input, systeminfo, vector3 } from 'unityengine'; import { zepetocharacter, zepetoplayers, localplayer } from 'zepeto character controller'; export default class gyromovement extends zepetoscriptbehaviour { private localcharacter zepetocharacter; start() { // ローカルプレイヤーが追加されたときのリスナーを追加 zepetoplayers instance onaddedlocalplayer addlistener(() => { this localcharacter = zepetoplayers instance localplayer zepetoplayer character; }); // デバイスがジャイロスコープをサポートしているか確認 if (systeminfo supportsgyroscope) { // ジャイロスコープを有効にする input gyro enabled = true; } else { // ジャイロスコープがサポートされていない場合はスクリプトを無効にする console log("このデバイスではジャイロスコープがサポートされていません。"); input gyro enabled = false; } } update() { if (input gyro enabled) { // ジャイロスコープの重力のx軸値を取得\\ // キャラクターの安定した動きのために小数点以下1桁に丸める const gyrovalue = math round(input gyro gravity x 10) / 10; const direction = new vector3(0, 0, gyrovalue); // ローカルキャラクターを移動 this localcharacter move(direction); } } } スクリプトの説明 ローカルプレイヤーがシーンに追加されると、zepetoキャラクターのインスタンスを受け取ります。 値を丸めて、gyrovalueの値を取得します。 zepetoキャラクターをz軸方向に移動させるには、 direction をパラメータとして move() 関数に渡します。 2\) シーンにgameobjectを追加し、gyrogravityと名前を変更します。作成したgyromovement zepetoscriptを追加します。 3\) qrモバイルテストとして例のワールドを実行すると、zepetoキャラクターはデバイスの傾きに応じて移動します。 👍 ヒント この例で使用されている input gyro gravity に加えて、さまざまな input gyro 関数を使用できます。 さまざまなアイデアに適用できます。zepetoで楽しいワールドをリリースしてみてください!