Jump to content
UnitySpain
Sign in to follow this  
Lucky-chan

[Solucionado n_n]Problema enemigo no muere

Recommended Posts

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

Edited by Lucky-chan

Share this post


Link to post
Share on other sites

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

image.png

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

image.png

Cualquier duda nos comentas.

Un saludo y ánimo :)

Edited by Samusan

Share this post


Link to post
Share on other sites
6 hours ago, Samusan said:

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

image.png

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

image.png

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

Edited by Lucky-chan

Share this post


Link to post
Share on other sites
Quote

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 destroyed...                                                                            //if u can fix it  then do it xD for me is ok like that
            yield return new WaitForSecondsRealtime(Seconds);

        Destroy(gameObject);
    }
}

 

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

Edited by Lucky-chan

Share this post


Link to post
Share on other sites
12 hours ago, Lucky-chan said:

adjunto 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;

Share this post


Link to post
Share on other sites
On 3/16/2019 at 3:51 PM, Lucky-chan said:

ya 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).

Share this post


Link to post
Share on other sites
22 hours ago, lightbug said:

Sí, 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

Edited by Lucky-chan

Share this post


Link to post
Share on other sites
37 minutes ago, Lucky-chan said:

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

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 :10_wink: ...

Share this post


Link to post
Share on other sites

@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...

Share this post


Link to post
Share on other sites
1 hour ago, Lucky-chan said:

@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. 
 

Share this post


Link to post
Share on other sites

¡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? :91_thumbsup:

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 popular usa el término "script" como si fuera una palabra femenina. Acostumbraros, e ya.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...