Jump to content

Licnus

Registrados
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Licnus

  • Rank
    Recién Llegado

Profile Information

  • Especialidad
    Otros
  1. Muchas gracias por la respuesta @lightbug, ahora mismo lo pruebo. @pioj, una disclpa lo tendré en cuenta para la siguiente :D
  2. Hola, que tal a todos, soy nuevo en este foro, y la verdad también en el desarrollo de videojuegos. Yo no soy programador, y en el desarrollo de mi juego me ha salido un problema que no tengo ni idea de como resolverlo. Quisiera ver si alguien aquí puede ayudarme porque ya le di muchas vueltas al asunto y no se que pasa. Tengan un poco de paciencia porfa :) Este es mi script: using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemigoSeguidor : MonoBehaviour { public float visionRadius; public float Speed; public GameObject prefExp; GameObject player; Vector3 initialPosition; Vector3 target01; public static bool enRango = false; // Use this for initialization void Start() { StartCoroutine(autoDestroy()); player = GameObject.FindGameObjectWithTag("Player"); target01 = new Vector3(Random.Range(-988.4f, 988.6f), Random.Range(988.8f, -988.6f), 1f); } // Update is called once per frame void Update() { Vector3 target = target01; initialPosition = transform.position; float dist = Vector3.Distance(player.transform.position, transform.position); float rango = Vector3.Distance(initialPosition, target01); if (rango <= 0) { target01 = new Vector3(Random.Range(-988.4f, 988.6f), Random.Range(988.8f, -988.6f), 1f); } if (dist < visionRadius) { enRango = true; target = player.transform.position; } if (dist > visionRadius) { enRango = false; } float fixedSpeed = Speed * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, target, fixedSpeed); Debug.DrawLine(transform.position, target, Color.green); } void OnDrawGizmos() { Gizmos.color = Color.yellow; Gizmos.DrawWireSphere(transform.position, visionRadius); } void OnTriggerEnter2D(Collider2D collider) { if (collider.tag == "Destructor" && enRango) { Destroy(gameObject); Instantiate(prefExp, transform.position, Quaternion.identity); } if (collider.tag == "MeteorG" && enRango) { Destroy(gameObject); Instantiate(prefExp, transform.position, Quaternion.identity); } if (collider.tag == "MeteorM" && enRango) { Destroy(gameObject); Instantiate(prefExp, transform.position, Quaternion.identity); } } IEnumerator autoDestroy() { yield return new WaitForSecondsRealtime(120); Destroy(gameObject); Instantiate(prefExp, transform.position, Quaternion.identity); } } Aqui lo que sucede es que el "enemigo" persigue al "player" en tanto entre en el rango de vision. Y cuando este sale de rango, el "enemigo" sigue su curso. El problema es que cuando hay varios enemigos parece haber un bug. Ya que para poder hacer colision con ciertos objetos, como se ve en el script, necesito estar "enRango = true", pero al haber varios "enemigos" siguiendo al player y si uno se destruye, parece que "enRango" cambia a false, y los demas objetos ya no pueden hacer colisión a pesar de que aun siguen al "player".Quisiera ver si alguno de ustedes sabe cual es la razón y como puedo resolverlo. Muchas gracias de antemano desde ya!.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...