J'ai ce script de fermeture/ouverture de porte.
Il fonctionne sans pb pour un perso qui passe tranquillement.
Dans mon projet, il y a 2 path qui passent par cette "porte". Les perso qui prennent ces paths sont gérés aléatoirement.
Du coup il arrive que 2 perso passent en même temps l'un des 2 détecteurs, et il arrive que la porte reste ouverte.
Par exempl 2 perso passent en même temps le trigger d'entrée mais un perso va plus vite et passe le trigger de sortie.
La porte se ferme donc.
Puis le dauxième perso passe aussi le triger de sortie, mais du coup , il ouvre la porte qui reste donc ouverte.
Pour palier à cela j'ai modifier le script pour qu'au bout d'une seconde la porte se ferme.
Mais j'ai ce code erreur
Code : Tout sélectionner
Assets/PMR ascenseur et baie vitree/PMR_Ascenceur Baie Vitree/Baie vitree 2fbx/OuverturefermeturePorte.cs(43,17): error CS1014: A get or set accessor expected
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class OuverturefermeturePorte : MonoBehaviour
{
// à renseigner dans l'inspector
[SerializeField] Animator porteDroite;
[SerializeField] Animator porteGauche;
static private bool opendoor = false;
/// <summary>
/// OnTriggerEnter
/// </summary>
/// <param name="other"></param>
public void OnTriggerEnter (Collider other)
{
if ( other.tag == "PIETON" || other.tag == "Player")
{
// déclenche le trigger de l'animator de chaque porte
if(!opendoor)
{ // si portes fermées, alors on ouvre
porteDroite.SetBool("Ouverture", true);
porteGauche.SetBool("Ouverture", true);
opendoor = true;
}
else
{ // sinon portes ouvertes, donc on ferme
porteDroite.SetBool("Ouverture", false);
porteGauche.SetBool("Ouverture", false);
opendoor = false;
}
}
}
public IEnumerator FermetureSiOuverture {
// si 2 perso passent vite possibilité de pb de fermeture donc tempo de fermeture
yield return new WaitForSeconds(1); // attente 1sec puis fermeture forcée
if(opendoor)
{ // si portes encore ouvertes, alors on ferme
porteDroite.SetBool("Ouverture", false);
porteGauche.SetBool("Ouverture", false);
opendoor = false;
}
}
Merci