---
title: Menggunakan Sensor Gyro
slug: world-sdk-guide-id/menggunakan-sensor-gyro
docTags: 
createdAt: 2024-09-02T08:34:13.136Z
---

Saat membuat ZEPETO World, Anda dapat menggunakan Sensor Gyro untuk menerapkan berbagai ide permainan dunia tergantung pada kemiringan perangkat. Panduan ini akan menunjukkan kepada Anda cara memanfaatkan Input.gyro dalam ZEPETOScript.

:::hint{type="info"}
**📘 Giroskop**
[https://docs.unity3d.com/ScriptReference/Gyroscope.html](https://docs.unity3d.com/ScriptReference/Gyroscope.html)
:::



## Mengatur objek

1\) Tambahkan Hierarchy > \[+] > Objek 3D > Objek Bola ke Scene.

2\) Ubah nama objek menjadi Bola dan tambahkan komponen Rigidbody.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-V_tjRc4HXXgvqc9HApHTU-20240904-102419.png)



## Menulis skrip

1\) Tambahkan TypeScript dan ganti nama skrip menjadi RollingBall.
Tulis skrip contoh seperti yang ditunjukkan di bawah ini.

```typescript
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() {
 
        // Dapatkan komponen Rigidbody yang terpasang pada GameObject yang sama dengan skrip ini
        this._rollingBall = this.GetComponent<Rigidbody>();
 
        // Periksa apakah perangkat mendukung giroskop
        if (SystemInfo.supportsGyroscope) {
            // Aktifkan giroskop
            Input.gyro.enabled = true;
        } else {
            // Nonaktifkan skrip jika giroskop tidak didukung
            console.log("Giroskop tidak didukung pada perangkat ini.");
            Input.gyro.enabled = false;
        }
    }
 
    Update() {
        // Periksa apakah giroskop perangkat input diaktifkan
        if (Input.gyro.enabled) {
     
            // Baca nilai gyro di sepanjang sumbu x dan z
            // Bulatkan ke satu tempat desimal untuk gerakan stabil objek Bola
            let gyroValueX = Math.round(Input.gyro.gravity.x * 10) / 10;
            let gyroValueZ = Math.round(Input.gyro.gravity.y * 10) / 10;
     
            // Atur kecepatan Bola dengan gyroValueX dan gyroValueZ
            this._rollingBall.velocity = new Vector3(gyroValueX * this.velocityMultiplier, 0, gyroValueZ * this.velocityMultiplier);
     
            // Tampilkan nilai gyro saat ini di layar
            this.debugText.text = "Input.gyro.gravity : " + Input.gyro.gravity.ToString();
        }
    }
}
```



Deskripsi Skrip

- Mengambil komponen Rigidbody yang terpasang pada objek Bola.
- Bulatkan `Input.gyro.gravity.x` dan `Input.gyro.gravity.z` nilai untuk mendapatkan nilai gyroValueX, gyroValueZ.
- Berikan kecepatan pada objek Bola dengan mengganti nilai gyroValueX dan gyroValueZ yang dikalikan dengan velocityMultiplier ke dalam `kecepatan`.
- Nilai `Input.gyro.gravity` ditampilkan di layar melalui Text UI.

:::hint{type="info"}
**📘 Gyroscope.gravity**
[https://docs.unity3d.com/ScriptReference/Gyroscope-gravity.html](https://docs.unity3d.com/ScriptReference/Gyroscope-gravity.html)
:::



2\) Tambahkan RollingBall ZEPETOScript yang Anda tulis ke objek Bola.
Di jendela Hierarchy, sambungkan Text UI ke Properti yang ditampilkan di jendela Inspektor ZEPETOScript dengan cara menyeret dan menjatuhkan.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-8ysTWIE43qlIF8v4uoc-F-20240904-102419.png)



## Pengujian di mobile

1\) Jalankan dunia contoh dengan pengujian QR mobile.

2\) Objek Bola bergerak sesuai dengan kemiringan perangkat.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-imdoIv81Rz-3ltAWP814w-20240904-102427.gif)



:::hint{type="danger"}
**❗️ Hati-hati**
Harap dicatat bahwa `Input.gyro` hanya berfungsi di lingkungan seluler.
:::



## Menerapkan contoh

Anda dapat menggerakkan karakter ZEPETO dalam ZEPETO World dengan menerapkan Input.gyro.

1\) Tambahkan TypeScript dan ganti nama skrip menjadi GyroMovement.
Tulis skrip contoh seperti yang ditunjukkan di bawah ini.

```typescript
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() {

        // Tambahkan pendengar untuk saat pemain lokal ditambahkan
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            this._localCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
        });

        // Periksa apakah perangkat mendukung giroskop
        if (SystemInfo.supportsGyroscope) {
            // Aktifkan giroskop
            Input.gyro.enabled = true;
        }
        else {
            // Nonaktifkan skrip jika giroskop tidak didukung
            console.log("Giroskop tidak didukung di perangkat ini.");
            Input.gyro.enabled = false;
        }
    }

    Update() {
        if (Input.gyro.enabled) {
            // Dapatkan nilai sumbu-x dari gravitasi giroskop\
            // Bulatkan ke satu tempat desimal untuk gerakan karakter yang stabil
            const gyroValue = Math.round(Input.gyro.gravity.x * 10) / 10;

            const direction = new Vector3(0, 0, -gyroValue);

            // Gerakkan karakter Lokal
            this._localCharacter.Move(direction);
        }
    }
}
```



Deskripsi Skrip

- Ketika pemain lokal ditambahkan ke Scene, terima instance karakter ZEPETO.
- Bulatkan nilai `Input.gyro.gravity.x` untuk mendapatkan nilai gyroValue.
- Gerakkan karakter ZEPETO ke arah sumbu Z dengan menetapkan `arah` sebagai parameter untuk fungsi `Move()` .

2\) Tambahkan GameObject ke Scene dan ubah namanya menjadi GyroGravity. Tambahkan Skrip GyroMovement ZEPETO yang Anda buat.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-74IJHaP7idj8ksq9R4HuP-20240904-102419.png)



3\) Saat menjalankan dunia contoh sebagai tes QR mobile, karakter ZEPETO bergerak sesuai dengan kemiringan perangkat.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-uFHS5kSA5kOn4yAFMvvXa-20240904-102427.gif)



:::hint{type="success"}
👍 **Tips**

- Selain `Input.gyro.gravity` yang digunakan dalam contoh ini, Anda dapat menggunakan berbagai fungsi `Input.gyro` .
- Anda dapat menerapkan ini pada berbagai ide. Cobalah merilis dunia yang menyenangkan di ZEPETO!
:::

