Créer un objet qui mange le Monde
7 min
Projet d'échantillon
📘 Fichiers de projet utilisés dans la conférence
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é
Scripts
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;
});
}
} 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);
}
}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;
}
}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;
}
}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;
}
}
}