[Résolu]Background 2D - Taille/Tips ?

Questions à propos du GUI, y compris la partie script.
Elriks
Messages : 106
Inscription : 02 Oct 2011 08:28

[Résolu]Background 2D - Taille/Tips ?

Message par Elriks » 07 Jan 2012 21:49

Bonsoir,

N'étant pas un infographe mais touchant un peu photoshop tout de même, j'ai crée un décor a partir de 0 que je voulais integrer dans Unity

Image

Et la je constate qu'il faudrait le scaler de XXX % , ma faute j'aurais du y penser, j'en refait un beaucoup plus gros et un peu différent, même problème obliger de le scaler.

Le problème avec ce genre de decor c'est que je ne peux pas le vectoriser, le résultat serait affreux :roll: Alors je voulais savoir, il y a des règles a suivre, des tips pour avoir un background qui prend l’intégrité de la surface de jeu sans pour autant avoir a se déformer de X fois même avec une taille monstrueuse ?
Dernière édition par Elriks le 09 Jan 2012 13:23, édité 1 fois.

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: Background 2D - Taille/Tips ?

Message par artemisart » 07 Jan 2012 23:48

Si une texture doit être affiché en plein écran, il faut qu'elle soit obligatoirement en 1920 x 1080p.
Si elle est plus petite, ça devient moche sur les grands écrans.

Elriks
Messages : 106
Inscription : 02 Oct 2011 08:28

Re: Background 2D - Taille/Tips ?

Message par Elriks » 07 Jan 2012 23:56

Merci, je vais tenter de chercher une solution moins gourmande consistant a faire défiler le niveau/background en boucle plutôt que faire une surface qui fera 2 km de long

Avatar de l’utilisateur
gabriel
Messages : 174
Inscription : 08 Oct 2011 22:32
Localisation : Devant mon clavier

Re: Background 2D - Taille/Tips ?

Message par gabriel » 08 Jan 2012 03:02

Bonjour,

Ici un tutorial sur les défilements qui peut intéresser, bien que pour xna mais le principe devrait être portable.
http://www.xna-connection.com/post/Tuto ... e-avec-XNA

Ensuite, tu devrais t'en sortir pas mal avec un shader, une ou deux textures plus petites en adaptant le plane qui contiendra ton décor suivant la taille de la zone de rendu (tu peux zoomer/dezoomer en multipliant l'UV dans le vertex shader).
Déjà toute la partie haute (gradient + atténuation de l'herbe en arrière plan) peut être calculée à la volée.
Tu dois pouvoir définir en script la position du point le plus lumineux puis en fonction de la distance avec l'UV courante calculer un niveau de gris. Ensuite, tu dois pouvoir définir à partir de quand tu dois plaquer la texture herbe sur deux niveaux de profondeur : Le premier sans modification, le second avec un mélange sur le gradient calculé précédemment.
Prochainement sur vos écrans

Elriks
Messages : 106
Inscription : 02 Oct 2011 08:28

Re: Background 2D - Taille/Tips ?

Message par Elriks » 08 Jan 2012 14:42

Merci Gabriel, mais a force de tatonner j'ai peut être trouvé une possibilité plus accessible pour avoir ce que je souhaite .

Quand tu appliques ce script sur un plane ou guiTexture avec ton background , ce dernier ce deplace a une vitesse proportionnelle a celle de la valeur de Speed :

Code : Tout sélectionner

public class DeplacerObjet : MonoBehaviour {

    public float Speed;
	ControleJoueur getControleJoueur = new ControleJoueur();
	
	void Update () 
    {
       
        float planeDeplacement = Speed * Time.deltaTime;
        transform.Translate(Vector3.left * planeDeplacement, Space.World);
       
    }
}
Ce que je cherche depuis ce matin, c'est voir comment récupérer les valeurs en X de déplacement de mon joueur. Je pourrais ainsi l'appliquer en update sur le deplacement du background a la place d'une vitesse fixe (pratique pour éviter que le scrolling défile alors que tu es a l’arrêt :roll: )

En appliquant a 3 plane ce script avec un résultat différent par division du résultat du déplacement, je pourrais avoir un scrolling multiple et adapté.


Edit retour du footing (Quand le corps est fatigué le cerveau se reveille :mrgreen: ) Je doute que ce soit optimisé niveau performance voir même si ça tiendra la route niveau fluidité mais ça marche .

Code : Tout sélectionner

public class DeplacerObjet : MonoBehaviour {

    public float Speed;
	ControleJoueur getControleJoueur = new ControleJoueur();
	
	void Update () 
    {

        float planeDeplacement = Input.GetAxis("Horizontal") * Time.deltaTime / 50.0f;
        transform.Translate(Vector3.left * planeDeplacement, Space.World);
       
    }


}

Répondre

Revenir vers « L'interface GUI »