Unity Spain
Post Antiguos => General (Antiguo) => Mensaje iniciado por: brok en Noviembre 06, 2015, 08:12:51 PM
quiero que cuando el enemigo este a 0 salte el Slider a false como gameobjet, el erros me da en el if(vidaAI.vidaEnemigo<=0),Severity Code Description Project File Line
Error NullReferenceException: Object reference not set to an instance of an object Solution 'curso' (3 projects) Assets/script/DestruirBarra.cs 25using UnityEngine;
using System.Collections;
public class DestruirBarra : MonoBehaviour {
Player_ai player_ai;
vidaPlayerAI vidaAI;
// Use this for initialization
void Start ()
{ player_ai = GetComponent<Player_ai>();
vidaAI = GetComponent<vidaPlayerAI>();
}
// Update is called once per frame
void Update ()
{
destruir();
}
void destruir()
{
if (vidaAI.vidaEnemigo <= 0)
player_ai.eneSlider.gameObject.SetActive(false);
}
}
No lo sé, no veo el error en este script. x_X¿Estás seguro de que está encontrando los componentes player_ai y vidaAI?
El eneSlider no está inicializado en el player-ai. Mira allí o pon ese código.
SI puedo jujar pero no funciona
Este el player aiusing UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;[RequireComponent(typeof(NavMeshAgent))]
public class Player_ai : MonoBehaviour
{
public Transform Target;
Vector3 Destination;
public Slider eneSlider;
NavMeshAgent Agent;
Animator Anim;
public float Speed = 1.0f;
public float Rango;
public float distanciaS = 1.0f;
public float distanciaP = 2.0f;
vidaPlayerAI vidaAI; void Start()
{
vidaAI = GetComponent<vidaPlayerAI>();
Anim = GetComponent<Animator>();
Agent = GetComponent<NavMeshAgent>();
Destination = Agent.destination;
} void Update()
{
eneSlider.value = vidaAI.vidaEnemigo; if (Vector3.Distance(Destination, Target.position) > Speed) {
Destination = Target.position;
Agent.destination = Destination;
StartCoroutine(idle());
}
}
IEnumerator idle()
{ yield return new WaitForSeconds(1f); if (Vector3.Distance(transform.position, Target.position) >= distanciaS)
{
Anim.SetFloat("idle", 0.0f);
if (Vector3.Distance(transform.position, Target.position) <= distanciaP)
{
Anim.SetFloat("idle", 1.0f);
StartCoroutine(patada());
} } yield return null;
}
IEnumerator patada()
{ yield return new WaitForSeconds(2f);
if (Vector3.Distance(transform.position, Target.position) >= distanciaS)
{
Anim.SetFloat("patada", 1.0f);
Anim.SetFloat("idle", 0.0f); if (Vector3.Distance(transform.position, Target.position) >= distanciaP)
{
Anim.SetFloat("patada", 0.0f);
Anim.SetFloat("idle", 0.0f);
} } yield return null; } este el que resta la vida using UnityEngine;
using System.Collections;public class vidaPlayerAI : MonoBehaviour {
public float vidaEnemigo = 100f;
public void RestarVidaEnemigo()
{ vidaEnemigo -= 10f;
if (vidaEnemigo <= 0f)
{
Destroy(gameObject);
}
}
}
eneSlider lo tienes como public sin buscarlo con GetComponent. Lo tienes asignado en el editor?
no sabia que tenia que estar en la escena con el player_ai arreglado