Jump to content
UnitySpain

Search the Community

Showing results for tags 'bullet'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Inicio
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
  • Mesa de ayuda
    • Unity
    • Arte
    • Otras Especialidades
    • Builds & Dispositivos
  • Aportes de la Comunidad
    • Recursos
    • Eventos
    • Buenas Prácticas
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Blogs

  • byGui

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 2 results

  1. Buenas tardes. Tengo un objeto bala, que hace un spawn en el spawnpoint del player colocado a tal efecto. Al probar el juego, y antes de morir el player, todo va bien; esto es, la bala se instancia en el sitio correcto, con su velocidad correcta, y desaparece al transcurrir el lifetime. Una vez que el player muere, cambia el tag de player a untagged, para evitar que los enemigos sigan interaccionando con él; hago un fundido de pantalla y reaparece en el spawnpoint al comienzo del nivel, recuperando su tag de player de nuevo. Todo bien. El problema es que ahora (tras el respawning), al disparar la bala queda paralizada en el aire, y en consola aparece el mensaje (tan común a veces, pero esta vez no doy con la tecla): "NullReferenceException: Object reference not set to an instance of an object. Bullet_Manager. Update()...cs:25" La línea 25 es la del if (player.faceRight && !player.verticalLook)... y el caso es que si quito esta línea, el error me lo vuelve a dar (tras morir el player, claro) en el siguiente if. Sé que está complicado, pero si alguien arrojase un atisbo de luz para continuar el proyecto, estaría eternamente agradecido. Gracias de antemano! public class Bullet_Manager : MonoBehaviour { public float speed; public float lifeTime; Rigidbody2D rb; public GameObject impactPrefab; public int damageValue = 1; PlayerController player; void Start() { rb = GetComponent<Rigidbody2D>(); player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>(); if (player.faceRight && !player.verticalLook) { rb.velocity = new Vector2(speed, rb.velocity.y); } else if (!player.faceRight && !player.verticalLook) { rb.velocity = new Vector2(-speed, rb.velocity.y); Vector3 bulletScale = transform.localScale; bulletScale.x *= -1; transform.localScale = bulletScale; } else if (player.faceRight && player.verticalLook || !player.faceRight && player.verticalLook) { rb.velocity = new Vector2(rb.velocity.x, speed); transform.Rotate(new Vector3(0f, 0f, 90f)); } Destroy(gameObject, lifeTime); } private void OnTriggerEnter2D(Collider2D col) { Instantiate(impactPrefab, transform.position, Quaternion.identity); Destroy(gameObject); } }
  2. Buenos días. Les escribo como último recurso tras haberme devanado los sesos durante unos meses. Por motivos laborales no dedico todo el tiempo que me gustaría a Unity, pero les aseguro que llevo ya mucho tiempo con este problema y no doy con la tecla. Resulta que cuando inicio el juego todo va perfecto con la bala; se instancia a la perfección y no da problemas. Pero cuando el player muere y reaparece en el punto de control asignado, al pulsar disparo para instanciar la bala, ésta se queda en el punto donde es instanciada, esto es, que no tiene velocidad, y me aparece el consabido error "NullReferenceException: Objet Refence not set to an instance or an object". A priori puede parecer que el Player pierde su tag "Player"; en cierto modo es así, pues durante su muerte pasa a "untagged" para evitar que los enemigos sigan interaccionando con él, pero una vez realiza el respawn, vuelve a tener su tag "Player". Espero que alguien pueda arrojar algo de luz al asunto, y gracias de antemano. public class BulletManager : MonoBehaviour { public float speed; public float lifeTime; Rigidbody2D rb; public int damageValue = 1; PlayerController player; public GameObject impactPrefab; private void Awake() { rb = GetComponent<Rigidbody2D>(); player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>(); if (player.faceRight && !player.verticalLook) //Esta el la línea que me //marca el error { rb.velocity = new Vector2(speed, rb.velocity.y); } else if (!player.faceRight && !player.verticalLook) { rb.velocity = new Vector2(-speed, rb.velocity.y); Vector3 bulletScale = transform.localScale; bulletScale.x *= -1; transform.localScale = bulletScale; } else if (player.faceRight && player.verticalLook || !player.faceRight && player.verticalLook) { rb.velocity = new Vector2(rb.velocity.x, speed); transform.Rotate(new Vector3(0f, 0f, 90f)); } Destroy(gameObject, lifeTime); } private void OnTriggerEnter2D(Collider2D col) { Instantiate(impactPrefab, transform.position, Quaternion.identity); Destroy(gameObject); } }
×
×
  • Create New...