using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class vidaenemigacofre : MonoBehaviour {
public float vida = 2;
private AudioSource sonidocofreabre;
private bool cofreabre;
public GameObject cofrecerrado;
public GameObject cofreabierto;
public GameObject[]Items;
void Start()
{
sonidocofreabre = GameObject.FindGameObjectWithTag ("sonidocofre").GetComponent<AudioSource> ();
cofreabierto.SetActive(false);
}
void Update ()
{
if (vida <= 0f) {
if (!cofreabre)
abriendo ();
{
}
}
}
void abriendo ()
{
cofreabre = true;
sonidocofreabre.Play ();
Debug.Log ("cofre se abre");
Invoke ("abrierto", 2);
}
void abrierto ()
{
cofreabierto.SetActive (true);
cofrecerrado.SetActive (false);
Instantiate(Items[Random.Range(,Items.Length)],transform.position,Quaternion.identity);
}
}
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class vidaenemigaspider : MonoBehaviour {
public float vida = 5;
public Animation anim;
public AudioClip audio1;
AudioSource audio;
private bool spidermuerto;
public siguejugador jugador;
void Start()
{
audio = GetComponent<AudioSource> ();
}
void Update ()
{
if (vida <= 0f) {
if (!spidermuerto)
spidermuere ();
{
}
}
}
void spidermuere ()
{
spidermuerto = true;
jugador.enabled = false;
audio.PlayOneShot (audio1, 0.3F);
anim.Play ("die");
Debug.Log ("spider muere");
}
}
using UnityEngine;
using System.Collections;
public class dañospider : MonoBehaviour {
public AudioClip muere;
//public vidaenemigaspider vida;
AudioSource audio;
void Start()
{
audio = GetComponent<AudioSource> ();
}
void OnTriggerEnter(Collider col)
{
if (col.gameObject.tag == "spider") {
Debug.Log ("muereee");
audio.PlayOneShot (muere, 0.8F);
GameObject.FindGameObjectWithTag ("spider").GetComponent<vidaenemigaspider>().vida -= 5;
}
}
}
SOLUCIONADO.
Explico lo que he echo para los que lean este post:
Antes tenia un script que al entrar en contacto con el objeto que llevaba el script(dañospider), pues la spider moria.
Pero...si había mas de una spider por ai.....se liaba la cosa y solo moria 1.
Bien analizando y después de 4 cafés!! XD
He puesto el daño de la spider directamente en la vida de la spider(vidaenemigaspider), tenéis los scripts más arriba.
como lo he echo?
Pues suprimiendo el dañospider y fusionandolo en el (vidaenemigaspider) , aquí el resultado.
using UnityEngine;
using System.Collections;
//using UnityEngine.UI;
public class vidaenemigaspider : MonoBehaviour {
public float vida = 5;
public Animation anim;
public AudioClip audio1;
AudioSource audio;
private bool spidermuerto;
public siguejugador jugador;
void Start()
{
audio = GetComponent<AudioSource> ();
}
void Update ()
{
if (vida <= 0f) {
if (!spidermuerto)
spidermuere ();
{
}
}
}
void spidermuere ()
{
spidermuerto = true;
jugador.enabled = false;
audio.PlayOneShot (audio1, 0.3F);
anim.Play ("die");
Debug.Log ("spider muere");
}
void OnTriggerEnter(Collider col)
{
if (col.gameObject.tag == "trampafuego")
{
Debug.Log ("muereee");
GetComponent<vidaenemigaspider>().vida -= 5;
}
}
}
la fusion esta en las ultimas lineas no se si aparecen números pero esta entre la 42 y la 51.
trampafuego es lo que daña a la spider asi que, le he dicho que si la spider entra en triger con "trampafuego", pues que le reste la vida.
Asi puedo llamar directamente a la variable "vidaenemigaspider" de una forma mas sencilla y sin errores.
:)
Gracias por tan fantástica comunidad!!