// Use this for initialization public void Start() { //Debug.Log ("mode EXTENSION"); etat = PistonEtat.REPLI; tempsFin = -1.0f; deplacementRepli = (transform.position - this.transform.parent.position).magnitude; rb = GetComponent <Rigidbody> (); vitesseExtension = deplacementMax / tempsExtension; vitesseRepli = -deplacementMax / tempsRepli; doitEtreEnclanche = false; actif = false; GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameManager>().myDelegate += setActif; }
void FixedUpdate() { if (Time.time >= tempsFin) { //On passe à l'état suivant switch (etat) { case PistonEtat.EXTENSION: //Debug.Log ("mode PAUSE"); etat = PistonEtat.PAUSE; tempsFin = Time.time + tempsPause; rb.velocity = Vector3.zero; transform.position = transform.parent.position + transform.parent.up * deplacementMax; doitEtreEnclanche = false; break; case PistonEtat.PAUSE: //Debug.Log ("mode REPLI"); etat = PistonEtat.REPLI; tempsFin = Time.time + tempsRepli; rb.velocity = Vector3.zero; rb.AddForce(transform.up * vitesseRepli, ForceMode.VelocityChange); break; case PistonEtat.REPLI: rb.velocity = Vector3.zero; transform.position = transform.parent.position + transform.parent.up * deplacementRepli; if (doitEtreEnclanche && actif) { //Debug.Log ("mode EXTENSION"); etat = PistonEtat.EXTENSION; tempsFin = Time.time + tempsExtension; rb.AddForce(transform.up * vitesseExtension, ForceMode.VelocityChange); source.PlayOneShot(sonActivation); } break; } } }