[Résolu][DB-AL]Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Répondre
BeeMadara
Messages : 7
Inscription : 09 Mars 2017 17:20

[Résolu][DB-AL]Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par BeeMadara » 09 Mars 2017 17:55

Bonjour,

Je débute tout juste avec Unity 3D et je souhaites réaliser un jeu 3D VR où l'on passerait d'une scène à l'autre soit par le biais de bouton ou soit en rentrant en collision avec un mur invisible.

1) J'aimerais savoir comment faire pour aller d'une scène à l'autre ? (conseil de tutoriels ou autres :cote: )

2) De plus, je souhaiterais mettre une vidéo entre les deux scènes comme une cinématique. Est-ce réalisable avec la version gratuite de Unity (personnal) d'intégrer de la vidéo ?


Merci d'avance ^^

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

Re: Help débutant : Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par ZJP » 09 Mars 2017 19:44

D'une scène à l'autre : Application LoadLevel.
La vidéo doit être placée sur un GameObject qui n'est pas détruit lors du changement de scène.

Tu dois -en résumé- avoir sur ta première scène un GO non "destructible" (ne pas oublier la Caméra!!!) qui se chargera une fois activé (ou "instancié") par une méthode quelconque (clic bouton, collision etc...) de jouer la vidéo ET de charger la scène suivante. Facile... :mrgreen:
Un truc du genre : (pas essayé)

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class CSuivante : MonoBehaviour 
{
	void Awake() {
		DontDestroyOnLoad(transform.gameObject);
		
		Renderer r = GetComponent<Renderer>();
		MovieTexture movie = (MovieTexture)r.material.mainTexture;
		movie.Play();

		Application.LoadLevel("LEVEL2");
    }
}
Et oui, on peut tout faire avec la version gratuite d'Unity. Il n' y pas de restriction du point de vu des fonctionnalités.


PS :

https://www.youtube.com/watch?v=YBc3ubr18ks


Le player de la future version 5.6.x.
https://www.youtube.com/watch?v=Vc8j1sOasuM

Khyinn
Messages : 3
Inscription : 09 Mars 2017 21:04

Re: Help débutant : Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par Khyinn » 10 Mars 2017 16:49

Application.LoadLevel est obsolète, il vaudrait mieux passer par SceneManager.LoadScene, non ? :)

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6206
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Help débutant : Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par boubouk50 » 10 Mars 2017 16:55

Tout dépend de ta version d'Unity, tant que Application.Load () est valide, on peut l'utiliser. Mais oui, il vaut mieux passer par le SceneManager
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

BeeMadara
Messages : 7
Inscription : 09 Mars 2017 17:20

Re: Help débutant : Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par BeeMadara » 13 Mars 2017 11:26

Merci à tous de vos réponses si rapide ^^.
Et en effet, le code ne marche pas avec ma version (unity 5.5.0).
Je vais essayer avec SceneManager.

BeeMadara
Messages : 7
Inscription : 09 Mars 2017 17:20

Re: Help débutant : Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par BeeMadara » 13 Mars 2017 12:34

Bon j'y arrive pas avec le code :pleur4:
Pouvez-vous m'expliquer avec des images, s'il vous plait ?

Voici la liste de mes objets sur ma première scène :
_ Main Camera
_ FPSController
_ Directional Light
_ Terrain
_ GameObject :
mur derrière
mur devant
mur gauche
mur droite
(cela forme un rectangle qui entoure mon personnage).
Je souhaites que lorsque mon personnage touche l'un de ces murs "invisible" cela déclenche la vidéo et le changement de scène.

J'insère où le script et j'écris quoi dedans ?

J'ai 3 scènes en tous :
_ la première avec un terrain et mon personnage
_ la seconde avec une vidéo et une caméra plein écran (il faut un script aussi pour l'activer ?)
_ la dernière avec un autre terrain et on revient avec mon personnage.

Voilà mon projet ! Je pensais que cela serait simple mais le code et moi ça fait deux X|

Aidez-moi s'il vous plait !!!!
Merci

BeeMadara
Messages : 7
Inscription : 09 Mars 2017 17:20

Re: Help débutant : Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par BeeMadara » 16 Mars 2017 13:00

COMMENT CHANGER DE SCÈNE AVEC UN SCRIPT EN C# Coucou à tous,

Voici le lien vers un bon tutoriel simple pour débutant (en anglais) pour le changement de scène avec SceneManager (pour les version de Unity 5.3 à maintenant 5.5) :
https://www.youtube.com/watch?v=9GQF4Ua5GW4

Voici le code COMPLET pour le changement de scène avec la barre ESPACE :

Code : Tout sélectionner

using System.Collections;
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.SceneManagement;

public class scenemanager : MonoBehaviour
{
    void Start() { }

    void Update()
    {
        if (Input.GetKeyDown (KeyCode.Space))
        {
            SceneManager.LoadScene("scene2");
        }
    }
}
Il est important de mettre using UnityEngine.SceneManagement; et garder using UnityEngine; sinon la machine ne comprend pas vos mots codés.

Le if (Input.GetKeyDown (KeyCode.Space)) permet de faire que la touche ESPACE mène vers l'autre scène mais ça peut être une autre touche, il suffit de changer le nom de la touche après l'appel KeyCode (voici le lien vers la doc : https://docs.unity3d.com/ScriptReference/KeyCode.html) ex: KeyCode.UpArrow , c'est la flèche du haut du clavier.

En espérant aider quelque débutant comme moi :cote:

:!: Les balises code SVP :!:
Merci de lire la Netiquette.
Dernière édition par BeeMadara le 17 Mars 2017 16:03, édité 1 fois.

BeeMadara
Messages : 7
Inscription : 09 Mars 2017 17:20

[Résolu][DB-AL]Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par BeeMadara » 17 Mars 2017 12:44

COMMENT METTRE UNE VIDÉO AVEC UN SCRIPT EN JAVASCRIPT Recoucou à Tous,

Voici comme faire pour activer une vidéo dans Unity :

Code en JavaScript :

Code : Tout sélectionner

GetComponent.<Renderer>().material.mainTexture.Play();
Il faut mettre ce code sur le plan ou l'objet qui porte votre vidéo comme une toile de cinéma.

Par étape :
1) Vous importer votre vidéo en faisant glisser celle-ci de vos documents à Unity dans les Assets (n'oublier pas de télécharger avant QuickTime de Apple qui convertie la vidéo en .ogg directement pour Unity).

2) Faire un plan qui prend tout l'espace de la vision caméra (regarder ce tuto : https://www.youtube.com/watch?v=dWncJP6KMxc)
3) Créer un Javascript

4) Ouvrer le et effacer tout pour mettre juste ce code ci-dessus. Enregistrer le script. (en fermant Unity vous demande de mettre à jour des fois le code vous dites OK).

5) Faite glisser le JavaScript sur le PLANE dans Hierarchy.

6) Faire glisser la vidéo sur le PLANE dans la Scene. Unity créer automatiquement un Matherial (normalement vous verrez le nom de votre vidéo dans Inspector/Matherials/Element 0).

7) Dans l'Inspector du PLANE, il y a sous le Script : La texture de votre vidéo (son nom avec un rond montrant le début de votre vidéo).
Là, vous mettez le Shader : Legacy Shaders/Lightmapped/Diffuse Detail.
Rajouter votre vidéo dans Lightmap (RGB) et Base (RGB) avec Main Color : blanc.
Ceci c'est pour avec la lumière d'origine de votre vidéo sinon elle est obscure.

8) NE PAS OUBLIER de mettre la bande sonore de votre vidéo dans le Audio Source du PLANE (dans assets votre vidéo contient dans son dossier le son. Il suffit de faire glisser dans l'emplacement de l'Audio Source).

9) Play et le tour est joué la vidéo s'active directement.

Voici le lien pour le tuto qui m'a aidé : https://www.youtube.com/watch?v=JZ2lKlZAh2Q

En espérant vous aider !! :cote:

BeeMadara
Messages : 7
Inscription : 09 Mars 2017 17:20

Re: [Résolu][DB-AL]Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par BeeMadara » 20 Mars 2017 15:11

Comment passer d'une scène à l'autre par Collision avec un mur Invisible

1) Prendre l’objet PLANE ou autre. Aller dans la barre principal (en-haut) : Component > Physics > Box Collider. Ne pas oublier d’effacer l’ancien Mesh Collider de l'objet d'origine. (Remarque : Le plan est entoure d'un contour vert = Box Collider).

2) Il faut tagger l’objet pour notre script donc aller dans l’Inspector > menu déroulant TAG > Add Tag…

3) Cliquer sur le + et écrire le tag souhaité et Save. Puis revenait sur l’Objet depuis Hierarchy : Recherche dans le menu déroulant du Tag : votre nouveau tag.

4) Créer un JavaScript et écrire le code ci-dessous :

Code : Tout sélectionner

 function OnControllerColliderHit(hit : ControllerColliderHit){
        if (hit.gameObject.tag == "nomnouveautag"){
            SceneManagement.SceneManager.LoadScene("Scene2");
        }
    }
Ne pas oublier SceneManagement avant SceneManager.LoadScene() car sinon celui-ci ne marche pas (c'est l'équivalence en C# de : using UnityEngine.SceneManagement; )

5) Enregistrer le script et faire glisser celui-ci sur le FPSController.

6) Enfin, pour rendre invisible votre mur, il suffit de décocher dans Inspector de l'objet : Mesh Renderer.

BeeMadara
Messages : 7
Inscription : 09 Mars 2017 17:20

Re: [Résolu][DB-AL]Comment passer d'une scène à l'autre en intégrant une vidéo comme transition ?

Message par BeeMadara » 20 Mars 2017 16:49

Comment passer d'une scène à l'autre à la suite d'une vidéo

Ce code permet de passer à la scène suivant après la fin de votre vidéo.

1) créer un script C# et écrire le code ci-dessous :

Code : Tout sélectionner

using System.Collections;
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.SceneManagement; //compréhension du code pour changer de scène

public class scenemanagersuite : MonoBehaviour
{
    public MovieTexture movTexture;
    public Renderer rend;

    void Start()
    {
        rend.material.mainTexture = movTexture; // movTexture = votre video
        movTexture.Play(); // joue la video
    }


    void Update()
    {
        if (!movTexture.isPlaying) // detecte la fin de la video
        {
            SceneManager.LoadScene("scene3"); // = le changement de scene
        }
    }
}
2) Enregistrer le script et faire glisser sur votre plan ou objet qui supporte votre vidéo.

3) Dans Inspector > Votre Script C# : Mettre votre vidéo dans Mov Texture et mettre votre objet (ici plan) dans Rend (noms donner dans le script).
(Remarque : garder la texture de votre vidéo en shader : Legacy shaders/Lightmapped/Diffuse Detail pour la luminosité de votre vidéo d'origine).

Voilà, ainsi j'ai réussi avec ces scripts (celui ci-dessus en C# et celui des collisions en JavaScript) de passer d'une scène 1 à une scène 3 en passant par ma vidéo transition de la scène 2.
Espérant aider ceux qui souhaites faire une cinématique entre ces scènes. :hello:

Répondre

Revenir vers « Scripting »