Un radar synchronisé à la caméra

Questions à propos du GUI, y compris la partie script.
Boby
Messages : 7
Inscription : 02 Avr 2014 21:25

Un radar synchronisé à la caméra

Message par Boby » 12 Avr 2014 17:11

Salut tout le monde,

comme je le dis dans ma présentation, je suis complètement novice dans Unity, donc je vous prie de m'excuser d'avance si je fais mon boulet à rien comprendre.

Je vais tacher d'expliquer simplement mon projet.

Il s'agit en gros d'une visite virtuelle d'un lieu à partir de photos à 360*180°.
Il n'y a pas de déplacement de personnage dans l'image. (ce sera pour un projet futur)

Donc j'ai créé une skybox avec mes faces de cubes, jusque là tout va bien...
J'ai rajouté un First person controller avec une camera, que l'on peu bien sûr faire tourner pour regarder à 360°.

Maintenant je m'attaque à l'interface graphique et c'est là que ça commence à coincer.
J'ai ajouté un plan de la pièce (GUI Texture) et je voudrais qu'un faisceau de couleur (en forme de cône partant d'un point défini sur le plan), représentant le champ de vision de la camera s'affiche au dessus de ce plan et soit synchronisé à la caméra.
En gros, on tourne dans l'image le faisceau tourne (le plan de la pièce ne bouge pas), si on zoom dans l'image (le champ de vision de la caméra diminue), la largeur du faisceau diminue.

Moi j'appelle cela un radar, mais j'ai fais pas mal de recherche sur internet et je ne trouve rien qui ressemble à ce que je veux faire.
Les radars que je voie sont beaucoup plus complexes, et souvent intégrés à une minimap qui suit le déplacement du personnage.

Bref je suis perdu.

Quelqu'un aurait il la solution? Ou du moins une petite piste pour me mettre sur la voie?


Merci d'avance.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Un radar synchronisé à la caméra

Message par cayou66 » 14 Avr 2014 15:47

Salut Boby,
Je travaille plus avec les GUITexture depuis très longtemps, mais sans rentrer dans les détails, pour faire tourner un objet selon un axe d'un autre objet, tu peux faire ça:

//Code en C#, ça va se ressembler en JS

Code : Tout sélectionner

public class FollowAxis : MonoBehaviour
{
  public Transform target;

  void Update()
  {
    if(target != null)
    {
      //L'axe y de la target appliquée à l'axe Z de notre objet, ça devrait être ça que tu souhaites
      transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, target.eulerAngles.y);
    }
  }
}
Tu places ce code sur ton UI qui doit tourner selon la caméra. Attention j'ai pas testé le code, il pourrait exister une méthode plus élégante (comme les fonction RotateAround), mais celle ci pourrait marcher.

Pour ce qui est du zoom, peut être que d'écraser ton cone dans le UI suffirait à faire l'effet que tu recherche (changer le localScale en temps réel de l'objet).
Dernière édition par cayou66 le 14 Avr 2014 16:01, édité 1 fois.

Boby
Messages : 7
Inscription : 02 Avr 2014 21:25

Re: Un radar synchronisé à la caméra

Message par Boby » 14 Avr 2014 15:59

Ok merci.
Je vais essayer de voir ce que je peux faire avec tout ça.
Je vous tiendrais au courant de mon avancée.

Merci encore.

Boby
Messages : 7
Inscription : 02 Avr 2014 21:25

Re: Un radar synchronisé à la caméra

Message par Boby » 14 Avr 2014 16:34

Salut,

grâce à toi je pense que je ne suis pas loin de la solution (et je t'en remercie) mais il me reste un soucis.

Je t'explique précisément ce que j'ai fait, des fois que cela puisse aider.

J'ai mon plan qui est un GUI texture.
J'ai créé l'image du faisceau sous photoshop et j'en ai fait un gui texture.
Sur ce gui texture j'ai associé le script que tu m'a passé.
Et dans la propriété target de mon faisceau, j'ai glissé le First Person Controller.

Quand je lance le projet, dans la fenêtre "scene" je vois qu'il y a un objet qui tourne en fonction de là où regarde la caméra.
Par contre dans la fenêtre "Game" mon faisceau ne bouge pas.

Pour tester j'ai modifié le update par OnGui(), ca ne fonctionne pas.

C'est sûrement un truc tout bête...mais je ne vois pas.

Une idée?

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Un radar synchronisé à la caméra

Message par cayou66 » 14 Avr 2014 19:37

Un screenshot pourrait aider, je vois pas juste comme ça.

Boby
Messages : 7
Inscription : 02 Avr 2014 21:25

Re: Un radar synchronisé à la caméra

Message par Boby » 15 Avr 2014 15:24

Image

Ca te parle plus?

Merci en tout cas de prendre du temps pour m'aider. C'est sympa.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Un radar synchronisé à la caméra

Message par cayou66 » 15 Avr 2014 15:29

Tu dis:
Quand je lance le projet, dans la fenêtre "scene" je vois qu'il y a un objet qui tourne en fonction de là où regarde la caméra.
On voit ça dans le screenshot? J'ai du mal à voir si c'est pertinent.

Boby
Messages : 7
Inscription : 02 Avr 2014 21:25

Re: Un radar synchronisé à la caméra

Message par Boby » 15 Avr 2014 15:39

Dans la fenêtre scene, il y a un objet sélectionné nommé faisceau. C'est celui avec les 3 axes xyz.
Quand je tourne la caméra, je vois les axes de l'objet qui tournent.

Dans la fenêtre Game, l'objet faisceau, c'est le radar en bleu. Mais lui ne tourne pas.

J'ai lu sur internet qu'on ne pouvait pas appliquer une rotation à une gui texture...ca vient peut-être de là....

Tu disais dans ton 1er post que tu n'utilisais plus les gui texture.
Tu utiliserais autre chose pour faire ce que je veux?

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Un radar synchronisé à la caméra

Message par cayou66 » 15 Avr 2014 16:44

Ah bon ! On peut pas tourner les GUITextures???? WTF
Si tu veux tourner du ui avec OnGUI() c'est aussi l'enfer, faut tourner la matrice de rotation...
J'utilise NGUI comme plugin de UI, mais tu pourrais peut être juste t'en tenir à créer un Quad (GameObject > Create > Quad), lui mettre ta texture dessus, lui enlever le Mesh Collider (pour des raisons de persformances), et lui trouver un joli shader Unlit Transparent ou de lui mettre une lumière pour l'illuminer correctement.

Et lui pourra tourner.

Boby
Messages : 7
Inscription : 02 Avr 2014 21:25

Re: Un radar synchronisé à la caméra

Message par Boby » 15 Avr 2014 19:18

Salut salut....

bon tout d'abord merci pour tes réponses....

Cependant, je vais être honnête....je ne comprends rien de ton dernier message....Je ne connais pas encore tous les termes et du coup c'est pas simple.

Donc pour ne pas te faire perdre ton temps, je vais prendre un moment pour essayer de bien comprendre tous les termes techniques de ton message, et essayer ce que tu me propose.
Je te tiens au courant.

En tout cas merci.

Répondre

Revenir vers « L'interface GUI »