Utilisation du capteur gyroscopique
Lors de la création de ZEPETO World, vous pouvez utiliser le capteur gyroscopique pour mettre en œuvre diverses idées de jeu dans le monde en fonction de l'inclinaison de l'appareil. Ce guide vous montrera comment utiliser Input.gyro dans ZEPETOScript.
Configuration de l'objet
1) Ajoutez Hiérarchie > [+] > Objet 3D > Objet sphère à la scène.
2) Changez le nom de l'objet en Ball et ajoutez un composant Rigidbody.

Écrire un script
1) Ajouter TypeScript et renommer le script en RollingBall. Écrire un script d'exemple comme indiqué ci-dessous.
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() {
// Obtenir le composant Rigidbody attaché au même GameObject que ce script
this._rollingBall = this.GetComponent<Rigidbody>();
// Vérifier si l'appareil prend en charge le gyroscope
if (SystemInfo.supportsGyroscope) {
// Activer le gyroscope
Input.gyro.enabled = true;
} else {
// Désactiver le script si le gyroscope n'est pas pris en charge
console.log("Gyroscope non pris en charge sur cet appareil.");
Input.gyro.enabled = false;
}
}
Update() {
// Vérifier si le gyroscope de l'appareil d'entrée est activé
if (Input.gyro.enabled) {
// Lire les valeurs du gyroscope le long des axes x et z
// Arrondir à une décimale pour un mouvement stable de l'objet Ball
let gyroValueX = Math.round(Input.gyro.gravity.x * 10) / 10;
let gyroValueZ = Math.round(Input.gyro.gravity.y * 10) / 10;
// Définir la vitesse de la Ball avec gyroValueX et gyroValueZ
this._rollingBall.velocity = new Vector3(gyroValueX * this.velocityMultiplier, 0, gyroValueZ * this.velocityMultiplier);
// Afficher les valeurs gyro actuelles à l'écran
this.debugText.text = "Input.gyro.gravity : " + Input.gyro.gravity.ToString();
}
}
}
Description du script
- Obtient le composant Rigidbody attaché à l'objet Ball.
- Arrondir le Input.gyro.gravity.x et Input.gyro.gravity.z valeurs pour obtenir les valeurs gyroValueX, gyroValueZ.
- Donner de la vitesse à l'objet Ball en substituant les valeurs gyroValueX et gyroValueZ multipliées par velocityMultiplier dans velocity.
- La Input.gyro.gravity valeur est affichée à l'écran via Text UI.
📘 Gyroscope.gravity https://docs.unity3d.com/ScriptReference/Gyroscope-gravity.html
2) Ajoutez le RollingBall ZEPETOScript que vous avez écrit à l'objet Ball. Dans la fenêtre Hiérarchie, connectez le Text UI à la Propriété affichée dans la fenêtre Inspecteur ZEPETOScript en faisant glisser et déposer.

Test sur mobile
1) Exécutez le monde d'exemple avec le test mobile QR.
2) L'objet Ball se déplace en fonction de l'inclinaison de l'appareil.

❗️ Attention Veuillez noter que Input.gyro ne fonctionne que dans des environnements mobiles.
Application de l'exemple
Vous pouvez déplacer le personnage ZEPETO dans le monde ZEPETO en appliquant Input.gyro.
1) Ajoutez TypeScript et renommez le script en GyroMovement. Écrivez un script d'exemple comme indiqué ci-dessous.
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() {
// Ajouter un écouteur pour quand un joueur local est ajouté
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
this._localCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
});
// Vérifier si l'appareil prend en charge le gyroscope
if (SystemInfo.supportsGyroscope) {
// Activer le gyroscope
Input.gyro.enabled = true;
}
else {
// Désactiver le script si le gyroscope n'est pas pris en charge
console.log("Gyroscope non pris en charge sur cet appareil.");
Input.gyro.enabled = false;
}
}
Update() {
if (Input.gyro.enabled) {
// Obtenir la valeur de l'axe x de la gravité du gyroscope\
// Arrondir à une décimale pour un mouvement stable du personnage
const gyroValue = Math.round(Input.gyro.gravity.x * 10) / 10;
const direction = new Vector3(0, 0, -gyroValue);
// Déplacer le personnage local
this._localCharacter.Move(direction);
}
}
}
Description du script
- Lorsqu'un joueur local est ajouté à la scène, recevez une instance de personnage ZEPETO.
- Arrondissez la Input.gyro.gravity.x valeur pour obtenir la valeur gyroValue.
- Déplacez le personnage ZEPETO dans la direction de l'axe Z en assignant direction comme paramètre à la Move() fonction.
2) Ajoutez un GameObject à la scène et renommez-le GyroGravity. Ajoutez le ZEPETOScript GyroMovement que vous avez créé.

3) Lors de l'exécution du monde d'exemple en tant que test mobile QR, le personnage ZEPETO se déplace en fonction de l'inclinaison de l'appareil.

👍 Conseils
- En plus de Input.gyro.gravity utilisé dans cet exemple, vous pouvez utiliser diverses Input.gyro fonctions.
- Vous pouvez appliquer cela à diverses idées. Essayez de publier un monde amusant sur ZEPETO !