Bonjour à tous,
J'ai une scene qui joue au lancement une video à 360 degrés en skybox. Je voudrais qu'à la fin de la video, la scene change automatiquement pour une autre. Et là, je sèche. Je trouve des infos à droite à gauche, mais pas suffisament compréhensibles pour moi.
J'ai déjà réussi à faire un script pour changer de scene après un click sur un gameobject (mon projet se compose d'une scene Menu qui permet de choisir entre 4 autres scenes qui sont des videos) et c'était pour moi un exploit (mon métier c'est cameraman, pas developpeur )
J'ai aussi réussi à faire des animations, à démarrer une video au sein de ma scene après une animation d'objets, mais là, je ne trouve pas.
Dois je utiliser videoplayer.play ? en demandant que dès que le videoplayer ne joue plus le scenemanager intervienne ?
J'ai lu aussi que je pouvais utiliser videoplayer.loopPointReached ....
Bref, au secours !
Sylvain
changement de scene à la fin de la video
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: changement de scene à la fin de la video
Bonjour Sylvain,
2 méthodes: Récupérer l'événement de fin de vidéo ou bien attendre que la vidéo ne joue plus.
De ce que je vois sur les internets, l'événement n'est pas stable, il n'est pas toujours envoyé. Un bug a été levé et probablement corrigé en fonction de la version que tu utilises.
Sinon tu peux attendre la fin en demandant à chaque fois, si la vidéo est terminée.
Il se peut que le code ne soit pas bon du premier coup, je ne l'ai pas testé.
2 méthodes: Récupérer l'événement de fin de vidéo ou bien attendre que la vidéo ne joue plus.
De ce que je vois sur les internets, l'événement n'est pas stable, il n'est pas toujours envoyé. Un bug a été levé et probablement corrigé en fonction de la version que tu utilises.
Code : Tout sélectionner
//A METTRE SUR LE GAMEOBJECT QUI CONTIENT LE VIDEOPLAYER
using UnityEngine;
using UnityEngine.Video;
public class MovieController : MonoBehaviour
{
private VideoPlayer m_VideoPlayer;
void Awake ()
{
m_VideoPlayer = GetComponent<VideoPlayer>();
m_VideoPlayer.loopPointReached += OnMovieFinished; // loopPointReached is the event for the end of the video
}
void OnMovieFinished(VideoPlayer player)
{
Debug.Log("Event for movie end called");
player.Stop();
//ICI CHARGER LA SCÈNE VOULUE
}
}
Code : Tout sélectionner
//A METTRE SUR LE GAMEOBJECT QUI CONTIENT LE VIDEOPLAYER
using UnityEngine;
using UnityEngine.Video;
public class MovieController : MonoBehaviour
{
private VideoPlayer m_VideoPlayer;
private IEnumerator coroutine;
void Start ()
{
m_VideoPlayer = GetComponent<VideoPlayer>();
coroutine = OnMovieFinished ();
StartCoroutine (coroutine);
}
IEnumerator OnMovieFinished ()
{
//A chaque image, regarder si on a atteint la dernière
while (videoPlayer.frame != videoPlayer.frameCount) {
yield return new WaitForEndOfFrame();
}
//ICI CHARGER LA SCÈNE VOULUE
}
}
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation