Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

[Solucionado n_n]Problema enemigo no muere

Iniciado por Lucky-chan, Marzo 15, 2019, 03:21:23 PM

Tema anterior - Siguiente tema
Marzo 15, 2019, 03:21:23 PM Ultima modificación: Marzo 16, 2019, 03:47:56 AM por Lucky-chan
hola, buenos días, hoy tengo otro problema, mi script dice que cuando el jugador salte sobre el enemigo este muera y reproduzca corrutina que ejecute una partícula de muerte, el problema es que por alguna razón mi enemigo no muere cuando el jugador cae sobre el, que podría estar mal en mi script?
 

   void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.tag == "Player")
        {
            float yOffset = 0.6f;
            if (transform.position.y + yOffset < col.transform.position.y)
            {
                StartCoroutine(FXCoroutine());
            }
        }
    }
    private IEnumerator FXCoroutine()
    {
        ParticleChan.Play();
        while (ParticleChan.IsAlive())
        {
            yield return null;
        }
        Destroy(gameObject);
    }
}

 
a como lo veo no hay ningún error

Prueba a usar:
 
Destroy (this.gameObject);

Marzo 15, 2019, 09:08:34 PM #2 Ultima modificación: Marzo 15, 2019, 09:12:03 PM por Samusan
Buenas,
 
He probado el script en mi PC y funciona perfectamente (solo he quitado el while y la referencia a ParticleChan). Pueden estar pasando dos cosas :
 
1.- ParticleChan.IsAlive() siempre se cumple y nunca sale del bucle.
 
2.- Falta algo de la configuración del inspector. Comprueba que el Player sea un Trigger y que tenga un rigidbody, revisa que tenga el tag asignado, que ambos sprites tengan colisiones etc.
 
Adjunto un pantallazo de como tengo yo el inspector :
 
Player
 

 
Enemy : El script "Enemy" es el código que has pasado.
 

 
Cualquier duda nos comentas.
 
Un saludo y ánimo :)

Marzo 16, 2019, 03:11:24 AM #3 Ultima modificación: Marzo 16, 2019, 03:47:08 AM por Lucky-chan
Cita de: Samusan date=1552680514Buenas,
   
   
      He probado el script en mi PC y funciona perfectamente (solo he quitado el while y la referencia a ParticleChan). Pueden estar pasando dos cosas :
   
   
      1.- ParticleChan.IsAlive() siempre se cumple y nunca sale del bucle.
   
   
      2.- Falta algo de la configuración del inspector. Comprueba que el Player sea un Trigger y que tenga un rigidbody, revisa que tenga el tag asignado, que ambos sprites tengan colisiones etc.
   
   
      Adjunto un pantallazo de como tengo yo el inspector :
   
   
      Player
   
   
      
   
   
      Enemy : El script "Enemy" es el código que has pasado.
   
   
      
   
   
      Cualquier duda nos comentas.
   
   
      Un saludo y ánimo :)
   


buenas noches,  muchas gracias, en seguida revisaré esto a ver si es eso lo que me causa problemas, gracias por tu ayuda (n_n)/
 
Edito: Solucionado, de hecho el comprobador  de while estaba provocando un bucle, al quitarlo funciona perfectamente :D

Marzo 16, 2019, 03:50:09 AM #4 Ultima modificación: Marzo 16, 2019, 04:16:30 AM por Lucky-chan



   

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//scrip made by Vergil and Lucky-chan, enjoy it n_n!
public class enemy : MonoBehaviour
{
    public float maxSpeed = 5f;
    public float Speed = 5f;
    public ParticleSystem ParticleChan;
    private bool Particle;// not necesary if u will use the script like this, but there it is if u need it n_n)/
    public float Seconds; //how many secs to wait for the particle to play
    public AudioSource RIP;//dead sound, not necesary though :P
    private Rigidbody2D rb2d;
    // Start is called before the first frame update
    void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
    }
        // Update is called once per frame
        void FixedUpdate()
    {
        rb2d.AddForce(Vector2.right * Speed);
        float limitedSpeed = Mathf.Clamp(rb2d.velocity.x, -maxSpeed, maxSpeed);
        rb2d.velocity = new Vector2(limitedSpeed, rb2d.velocity.y);
        if(rb2d.velocity.x > -0.01f && rb2d.velocity.x < 0.01f)
        {
            Speed = -Speed;
            rb2d.velocity = new Vector2(Speed, rb2d.velocity.y);
        }
        if (Speed < 0)
        {
            transform.localScale = new Vector3(5F, 5F, 5F);
        } else if (Speed > 0){
            transform.localScale = new Vector3(-5F, 5F, 5F);
        }
    }
    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.tag == "Player")
        {
            float yOffset = 0.53f;
            if (transform.position.y + yOffset < col.transform.position.y)
            {
                StartCoroutine(FXCoroutine());
            }
        }
    }
    private IEnumerator FXCoroutine()
    {
        ParticleChan.Play();
                   
            RIP.Play(); //i suggest to put the audio source out of the object that will be destro***...                                                                            //if u can fix it  then do it xD for me is ok like that
            yield return new WaitForSecondsRealtime(Seconds);
        Destroy(gameObject);
    }
}

   
       
   

[/quote]
 
adjunto la script completa por si alguien la quiere/necesita ;P

Cita de: Lucky-chan date=1552704609adjunto la script completa por si alguien la quiere/necesita ;P
   


Solo quiero ajustar algo de este comentario por que lo vengo leyendo hace varios años y me enferma.
 
Script significa GUIÓN y es MASCULINO;

ya tenía que salir un payaso de estos...

Marzo 17, 2019, 08:10:19 PM #7 Ultima modificación: Marzo 18, 2019, 01:07:16 PM por Samusan
.

Cita de: Lucky-chan date=1552762306ya tenía que salir un payaso de estos...
   


Sí, por vos lo decís? deberías ser más abierto/a, es solo un consejo (y además tiene razón).

Marzo 18, 2019, 08:43:08 PM #9 Ultima modificación: Marzo 18, 2019, 08:50:23 PM por Lucky-chan
Cita de: lightbug date=1552856072Sí, por vos lo decís? deberías ser más abierto/a, es solo un consejo (y además tiene razón).
   


pff te ofende que le diga payaso a tu novio? 
 
si no te gusta leer algo o te molesta ignóralo...
 
aparte esto no es Reddit, no comentes nada irrelevante

Cita de: Lucky-chan date=1552938188pff te ofende que le diga payaso a tu novio? 
   
   
      si no te gusta leer algo o te molesta ignóralo...
   
   
      aparte esto no es Reddit, no comentes nada irrelevante
   


Mi novio y yo pensamos que si seguís preguntando casi una vez por día en lo referente a problemas con tu juego (o lo que sea que estás haciendo) vas a terminar haciéndolo solo con el esfuerzo de la gente de por aquí, así que no te conviene andar llamándonos payasos por cualquier cosa (quedate tranquila, viene alguno como vos de vez en cuando) ... quizás te convenga empezar a leerte un poco más la doc, está bien fácil.
 
 
 
PD: Y no, justamente esto no es reddit  ...


@lightbug uso los foros como ultimo recurso .-.
 
aparte eso no es relevante, escribes esto solo para intentar molestar, es patético e inmaduro, reitero si no te gusta leer algo o te molesta ignóralo...

Cita de: Lucky-chan date=1553021802@lightbug uso los foros como ultimo recurso .-.
   
   
      aparte eso no es relevante, escribes esto solo para intentar molestar, es patético e inmaduro, reitero si no te gusta leer algo o te molesta ignóralo...
   


La escritura de las personas es importante. Estás nombrando de manera errónea algo que dentro del contexto del topic es el centro.

Te aseguro que el 30% de las personas que entran y ven "la script" directamente salen sin intentar ayudar.
 
¿Como último recurso utilizas el foro? ... Pero estoy viendo topic de tu persona por todo el foro consultando problemáticas relacionadas a programación básica. 
 
Mi recomendación. Aprende a programar, busca libros o videos en YT sobre C# y POO para entender los conceptos básicos. 

 

Marzo 20, 2019, 04:05:42 AM #14 Ultima modificación: Marzo 20, 2019, 04:07:03 AM por pioj
¡HAYA PAZ, SEÑORES!
 
@Lucky-chan, no te voy a pedir que te disculpes, pero ten en cuenta que has empezado tú, al no ignorar el comentario tonto de @francoe1. 
 
 
 
Dicho ésto y terminada la cizaña, vayamos a tratar de resolver el problema de este usuario. ¿Os parece? 
 
Me da la sensación de que no estás sacando la posición final del impacto, donde determinas que "chafa" al enemigo. En lugar de eso, parece que estás calculando siempre una diferencia, y que esa posición final no tiene por qué cumplirse...
 
 
 
Es una especulación, pero podría ser relevante, míratelo bien.
 
 
 
P.D. Para los que no seáis de América Latina, aunque no sea correcto, la jerga po***r usa el término "script" como si fuera una palabra femenina. Acostumbraros, e ya.

Etiquetas: