Faire un slide show d'images

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Faire un slide show d'images

Message par Freelax » 22 Déc 2010 18:38

Si je vois exactement ce que tu souhaite faire ;)

Au moment du deplacement tu fait tourner de 30degrés negatif pour ceux de gauche et 30degré positif pour ceux de droite et voila ! :)
Image

Avatar de l’utilisateur
kealkeal
Messages : 925
Inscription : 16 Juil 2010 17:31
Localisation : Paris

Re: Faire un slide show d'images

Message par kealkeal » 22 Déc 2010 18:40

Je veux bien mais tu mets ca où et comment ?

Suis pas doué en code ... ! ;)
kealkeal

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Faire un slide show d'images

Message par ZJP » 22 Déc 2010 22:46

Tes demandes en matière d'animation peuvent être résolues ( pour la plupart) avec iTween. Pour le coding, il n'y en a pas beaucoup. Cet éditeur peu aussi aider : http://dkoontz.wordpress.com/itween-visual-editor/ 8-)

JP

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Faire un slide show d'images

Message par Freelax » 22 Déc 2010 22:59

Ouai enfin rien ne vaut une bonne class perso pour comprendre et appliquer! le jour ou il veut y mettre un texte en dessous de son image, un système de notation etc... il devra tout refaire ! :D

enfin je dit ca je dit rien! :roll: je préfère recoder plutôt qu'adapter... :roll:
Image

Avatar de l’utilisateur
kealkeal
Messages : 925
Inscription : 16 Juil 2010 17:31
Localisation : Paris

Re: Faire un slide show d'images

Message par kealkeal » 23 Déc 2010 10:56

Oui ce serais mieux de tout coder afin de comprendre comment cela fonctionne.
Au moment du deplacement tu fait tourner de 30degrés negatif pour ceux de gauche et 30degré positif pour ceux de droite et voila !
Freelax, tu peux m'aider ? :oops:

Merci.
kealkeal

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Faire un slide show d'images

Message par Freelax » 23 Déc 2010 11:10

Je te donne une possibilité mais à toi de voir si c'est bien ca, ya que comme ca que l'on apprend. et puis je vais pas tout faire non plus :lol:

C'est à coup de rotate:

Code : Tout sélectionner

plans[0].transform.Rotate(Vector3.up, -50, Space.World); // Decale le plan de gauche
plans[1].transform.Rotate(Vector3.up, 0, Space.World); // Remet le plan de centre normale
plans[2].transform.Rotate(Vector3.up, 50, Space.World);  // Decale le plan de droite
à toi de voir ;)
Dernière édition par Freelax le 23 Déc 2010 15:56, édité 2 fois.
Image

Avatar de l’utilisateur
kealkeal
Messages : 925
Inscription : 16 Juil 2010 17:31
Localisation : Paris

Re: Faire un slide show d'images

Message par kealkeal » 23 Déc 2010 11:23

J'ai mis le code dans la fonction Start, là tout se passe bien. ;)

Par contre le probleme c'est la rotation est associée à un nom de plan.

Hors comme les plans translatent de la droite vers la gauche, les rotation ne sont plus bonnes.

Le but est que la rotation ne s'applique uniquement au plan situé à gauche et à droite du plan central.

C'est possible de faire cela ? :roll:
kealkeal

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Faire un slide show d'images

Message par Freelax » 23 Déc 2010 11:29

Si tu met le code dans la fonction Start, il ne sera appliqué qu'au moment de chargement du script.

C'est au moment du déplacement qu'il faut que tu applique les rotations, du coup dans la fonction Deplacement tu as accès au différents plan par plan[x].

plan[0] sera toujours le plan de gauche.
plan[1] sera toujours le plan du centre.
plan[2] sera toujours le plan de droite.
plan[3] sera toujours hors champ.
Image

Avatar de l’utilisateur
kealkeal
Messages : 925
Inscription : 16 Juil 2010 17:31
Localisation : Paris

Re: Faire un slide show d'images

Message par kealkeal » 23 Déc 2010 11:53

Voila ce que j'ai fait :

Code : Tout sélectionner

using UnityEngine;
using System.Collections; 

public class CoverflowCS : MonoBehaviour {
	
	public bool deplaceGo;        // Declanchement de deplacement
	public int vitesse = 1;        // Vitesse de deplacement
    public Transform[] plans;     // Array Plans
	public Object[] textures;     // Array Textures
	public int IDtextures = 0; 
	
	void Start() 
    { 
      textures = Resources.LoadAll("Textures", typeof(Texture2D));  // On recup les textures dans le dossiers
      
      for (int i = 0; i < plans.Length; i++)  // On affecte une texture au hasard a chaque plan
      { 
         plans[i].renderer.material.mainTexture = (Texture2D) textures[i];
         IDtextures =i;
      }
		plans[0].transform.Rotate(Vector3.up, 10, Space.World); // Decale le plan de gauche
		plans[1].transform.Rotate(Vector3.up, 0, Space.World); // Remet le plan de centre normale
		plans[2].transform.Rotate(Vector3.up, -10, Space.World);  // Decale le plan de droite
   }
	
	void OnGUI() 
    { 
		if (GUI.Button(new Rect( 0, 0, 100, 20 ), "Deplacement")) { deplaceGo = true; } // Lance le deplacement
		if(deplaceGo){ Deplacement(); } // Deplacement
	}
		
    void Deplacement()  // Fonction deplacement
	{
		if(plans[0].transform.position.x > -30){ // On deplace le tout tant que le plan a gauche est superieur a 40 en x (visibilité cam)
			plans[0].transform.position -= new Vector3(vitesse, 0, 0); 
			plans[1].transform.position -= new Vector3(vitesse, 0, 0); 
			plans[2].transform.position -= new Vector3(vitesse, 0, 0);
			plans[3].transform.position -= new Vector3(vitesse, 0, 0);
			plans[0].transform.Rotate(Vector3.up, 10, Space.World); // Decale le plan de gauche
			plans[1].transform.Rotate(Vector3.up, 0, Space.World); // Remet le plan de centre normale
			plans[2].transform.Rotate(Vector3.up, -10, Space.World);  // Decale le plan de droite
			
		}
		else{  // sinon si la position de plan le plus a gauche est inferieur a 40 (visibilité de la cam), on stop le deplacement, on prend ce meme plan et on le met à droite
			plans[0].transform.position = new Vector3(30, 6, 0); 
			deplaceGo = false;
			Replace();
		}
	}	
	
    void Replace() // on restructure l'array pour mettre  l'ancien premier plan en dernier, le 2eme en 1er etc...
	{
		Transform planfin = plans[0];
		plans[0] = plans[1];
		plans[1] = plans[2];
		plans[2] = plans[3];
		plans[3] = planfin;
		
		
		TextureChange(planfin);  // et enfin on change la texture en indiquant le nouveau dernier plan
	}	
	
      void TextureChange(Transform _planfin) 
   {      
       if(IDtextures +1 >= textures.Length){ IDtextures = 0; _planfin.renderer.material.mainTexture = (Texture2D) textures[IDtextures]; print(IDtextures);}
      else{ IDtextures += 1; _planfin.renderer.material.mainTexture = (Texture2D) textures[IDtextures]; print(IDtextures);}
   }
	}
Mais les plans tournent de maniere aléatoire ...

Je dois avoir raté quelque chose mais quoi ... :roll:
kealkeal

Avatar de l’utilisateur
kealkeal
Messages : 925
Inscription : 16 Juil 2010 17:31
Localisation : Paris

Re: Faire un slide show d'images

Message par kealkeal » 23 Déc 2010 13:23

Je souhaite donner la possibilite de faire défiler le coverflow de la droite vers la gauche et de la gauche vers la droite.

J'ai donc dans l'idée de faire apparaitre 2 boutons.

Si quelqu'un peut m'aider ...

Merci.
kealkeal

Répondre

Revenir vers « Scripting »