---
title: Créer un objet qui mange le Monde
slug: world-sdk-guide-fr/creer-un-objet-qui-mange-le-monde
docTags: 
createdAt: 2024-09-02T08:34:13.138Z
---

## Projet d'échantillon

:::hint{type="info"}
**📘 Fichiers de projet utilisés dans la conférence**

- [https://github.com/naverz/zepeto-world-sample/tree/main/Assets/Chapter2](https://github.com/naverz/zepeto-world-sample/tree/main/Assets/Chapter2)
:::

## Résumé

| Résumé       | Basé sur ce que nous avons appris dans le Chapitre 1, nous allons créer un monde où les objets sont mangés en utilisant la vitesse de mouvement du personnage et le contrôle du saut. |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Difficulté   | Débutant                                                                                                                                                                              |
| Temps requis | 30 minutes                                                                                                                                                                            |



**Objectifs du projet**

- Gestion de l'acquisition d'éléments en utilisant l'événement OnTrigger
- Comprendre comment appliquer l'interface utilisateur Text UI
- Créer un contrôleur d'interface utilisateur pour refléter l'acquisition d'éléments dans l'interface utilisateur Text UI
- Comprendre comment contrôler la hauteur du saut du personnage ZEPETO
- Comprendre comment contrôler la vitesse de mouvement des personnages ZEPETO



**🎬 Vidéo du monde terminé**

::embed[[https://www.youtube.com/watch?v=GOeopqFcbbs](https://www.youtube.com/watch?v=GOeopqFcbbs)]{url="https://www.youtube.com/watch?v=GOeopqFcbbs"}



## Scripts

:::CodeblockTabs
CharacterController.ts

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
import { SpawnInfo, ZepetoPlayers, LocalPlayer, ZepetoCharacter } from 'ZEPETO.Character.Controller'
import { WorldService } from 'ZEPETO.World';
export default class CharacterController extends ZepetoScriptBehaviour {
    Start() {
        //Obtient l'UserId (connecté via l'Éditeur)
        ZepetoPlayers.instance.CreatePlayerWithUserId(WorldService.userId,new SpawnInfo(), true);
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            let _player : LocalPlayer = ZepetoPlayers.instance.LocalPlayer;
        });
    }
}               
```
:::

:::CodeblockTabs
GetItem.ts

```typescript
import { Collider, Vector3, GameObject, Transform } from 'UnityEngine';
import { ZepetoCharacter, ZepetoPlayer, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { ZepetoScriptBehaviour, ZepetoScriptInstance } from 'ZEPETO.Script';
 
// importer un script personnalisé depuis le chemin
import UIController from './UIController';
 
export default class GetItem extends ZepetoScriptBehaviour 
{
   public extComponentGameObject: GameObject;
   private extComponent: UIController;
   private zepetoCharacter: ZepetoCharacter;

    Start() 
    {
        //Objet personnage Zepeto
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            this.zepetoCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
        });
        //importation de script
        this.extComponent = this.extComponentGameObject.GetComponent<UIController>();
    }


    OnTriggerEnter(collider: Collider) 
    {
        if (this.zepetoCharacter == null || collider.gameObject != this.zepetoCharacter.gameObject)
            return;
        
        //Envoie un message d'augmentation d'un compte après avoir mangé un objet
        this.extComponent.IncreaseCount();
        //Détruit l'objet
        GameObject.Destroy(this.gameObject);
   }
}
```
:::

:::CodeblockTabs
JumpPower.ts

```typescript
import { Collider } from 'UnityEngine';
import { ZepetoPlayers, ZepetoCharacter } from 'ZEPETO.Character.Controller';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';

export default class JumpPower extends ZepetoScriptBehaviour 
{
    public jumpPower: number = 5;
    private zepetoCharacter :ZepetoCharacter;

    Start() 
    {
        //Objet du personnage Zepeto
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            this.zepetoCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
        });      
    }

    OnTriggerEnter(collider: Collider) 
    {
        if (this.zepetoCharacter == null || collider.gameObject != this.zepetoCharacter.gameObject)
            return;
        
        //Ajouter la puissance de saut
        this.zepetoCharacter.additionalJumpPower = this.jumpPower;
    }

    OnTriggerExit(collider: Collider) {
        //Ramener la puissance de saut à la normale
        this.zepetoCharacter.additionalJumpPower = 0;
    }
}
```
:::

:::CodeblockTabs
SpeedUp.ts

```typescript
import { Collider, GameObject, WaitForSeconds } from 'UnityEngine';
import { ZepetoCharacter, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';

export default class SpeedUp extends ZepetoScriptBehaviour 
{
    private zepetoCharacter :ZepetoCharacter;
    public runSpeed: number = 4;
    public waitTime: number = 3;

    Start() 
    {
        //Objet du personnage Zepeto
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            this.zepetoCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
        });
    }
    
    OnTriggerEnter(collider: Collider) 
    {
        if (this.zepetoCharacter == null || collider.gameObject != this.zepetoCharacter.gameObject)
            return;
        this.zepetoCharacter.additionalRunSpeed = this.runSpeed;
        this.StartCoroutine(this.DoRoutine());
    }

    *DoRoutine() 
    {
        //Attendre la valeur de waitTime
        yield new WaitForSeconds(this.waitTime);
        //Ramener la vitesse de course à la normale
        this.zepetoCharacter.additionalRunSpeed = 0;
    }
}
```
:::

:::CodeblockTabs
UIController.ts

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { Text } from "UnityEngine.UI";
import { GameObject } from 'UnityEngine';

export default class UIController extends ZepetoScriptBehaviour 
{
    public resultUI: Text;
    public maxCount: number = 7;
    
    private stringProperty: string;   
    private message: string;
    private count: number;
    
    Start() 
    {
        //Valeur d'initialisation
        this.message = "Articles";
        this.count = 0;
    }
    
    public IncreaseCount() 
    {
        this.count++;
        
        if(this.count >= this.maxCount) 
        {
            this.resultUI.text = "Clair!";
        } 
        else 
        {
            this.stringProperty = `${this.message} : ${this.count}`;
            this.resultUI.text = this.stringProperty;
        }
    }
     
}
```
:::

