Je viens de m'occuper de faire en sorte que lorsque que je trouve mes pages, mon animation se lance ainsi que la modification du texte. Cependant il faut bien perdre si on gagner et c'est là que je bloque. J'ai ici le script de mon Skeleton et je voudrais faire en sorte dans mon WinGameManager que lorsque qu'il utilise l'animation isAttacking mon IEnumetor GameOver() et c'est ici que ça bloque. Je ne sais pas comment faire pour lier les deux scripts lorsqu'il attaque.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Chase : MonoBehaviour
{
public Transform player;
public Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
AudioSource audio = GetComponent<AudioSource>();
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction, this.transform.forward);
if(Vector3.Distance(player.position, this.transform.position) < 15 && angle < 90)
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle", false);
if(direction.magnitude > 5)
{
if (!audio.isPlaying) //Si le son n'est pas joué
{
audio.Play();
}
this.transform.Translate(0, 0, 0.5f);
anim.SetBool("isRun", true);
anim.SetBool("isAttacking", false);
}
else
{
anim.SetBool("isAttacking", true);
anim.SetBool("isRun", false);
}
}
else
{
if (audio.isPlaying)
audio.Stop();
anim.SetBool("isIdle", true);
anim.SetBool("isRun", false);
anim.SetBool("isAttacking", false);
}
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class WinGameManager : MonoBehaviour
{
public PaperCounter player;
public Text winText;
public Chase skeleton;
Animator anim1;
// Use this for initialization
void Start ()
{
anim1 = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
if(player.paperCount >= 1)
{
StartCoroutine(Pause());
}
//Ici je cherche à dire que lorsque Skeleton isAttacking je lance GameOver()
if(skeleton)
{
StartCoroutine(GameOver());
}
}
IEnumerator Pause()
{
winText.GetComponent<Text>();
winText.text = "You survived!";
anim1.SetTrigger("Win");
yield return new WaitForSeconds(10f);
SceneManager.LoadScene("Menu");
}
IEnumerator GameOver()
{
winText.GetComponent<Text>();
winText.text = "You failed!";
anim1.SetTrigger("Win");
yield return new WaitForSeconds(10f);
SceneManager.LoadScene("Main");
}
}