1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| // WebSocketClient.cs
using UnityEngine;
using WebSocketSharp;
using WebSocketSharp.Net.WebSockets;
public class WebSocketClient: MonoBehaviour {
private WebSocket ws;
public GameObject maCapsule;
public float hauteurDeplacement = 1.0 f;
// Vitesse de déplacement de la capsule
public float vitesseDeplacement = 5.0 f;
public void VersLeHaut() {
Debug.Log("dans vers le haut");
// Vérifie si la capsule est définie
Debug.Log("son nom : " + maCapsule.name);
if (maCapsule != null) {
Debug.Log("La capsule est connue");
// Calcule la position cible de la capsule (vers le haut)
Debug.Log("info maCapsule" + maCapsule.transform.position);
Vector3 positionCible = new Vector3(
maCapsule.transform.position.x,
maCapsule.transform.position.y * 30,
maCapsule.transform.position.z);
Debug.Log("apres calcul position cible");
// Déplace la capsule vers la position cible
maCapsule.transform.position = Vector3.Lerp(maCapsule.transform.position, positionCible, Time.deltaTime * vitesseDeplacement);
Debug.Log("apres deplacement vers position cible");
Renderer capsuleRenderer = maCapsule.GetComponent < Renderer > ();
Debug.Log("apres recuperation du render de la capsule");
if (capsuleRenderer != null) {
Debug.Log("changement de la couleur de la capsule");
capsuleRenderer.material.color = Color.blue;
} else {
Debug.LogError("Le composant Renderer est manquant sur la capsule !");
}
} else {
Debug.Log("La capsule n'est pas connu");
}
}
public void Traitement(object sender, MessageEventArgs e) {
// Vérifier si le message est un objet JSON
if (e.IsText) {
// Analyser le message JSON
var json = e.Data;
var obj = JsonUtility.FromJson < JsonObject > (json);
Debug.Log("Message reçu : " + json);
// Vérifier si les propriétés x, y et z sont égales à 15, 0 et 0 respectivement
if (obj.x == 15 && obj.y == 0 && obj.z == 0) {
Debug.Log("Message reçu et good coordonnées: " + json);
}
Debug.Log("avant le Invoke: ");
//Invoke("VersLeHaut",0.0f);
VersLeHaut();
Debug.Log("après le Invoke: ");
}
}
void Start() {
maCapsule = GameObject.Find("MaCapsule");
// Créer une instance WebSocket
ws = new WebSocket("ws://127.0.0.1:8888");
// Définir les gestionnaires d'événements
ws.OnOpen += (sender, e) => {
Debug.Log("WebSocket ouvert");
};
ws.OnMessage += (sender, e) => Traitement(sender, e);
ws.OnError += (sender, e) => {
Debug.LogError("Erreur WebSocket : " + e.Message);
};
ws.OnClose += (sender, e) => {
Debug.Log("WebSocket fermé");
};
// Connecter le client WebSocket
ws.Connect();
}
void OnDestroy() {
// Fermer la connexion WebSocket lorsque le script est détruit
if (ws != null) {
ws.Close();
}
}
private void OnMouseDown() {
Debug.Log("clic sur le cube");
VersLeHaut();
}
// Classe pour représenter l'objet JSON
[System.Serializable]
public class JsonObject {
public int x;
public int y;
public int z;
}
} |