Page 1 of 1

Dudas Unity

Posted: Mon Sep 26, 2016 1:33 pm
by juanpa1612
Profe como hago para llamar un metodo desde un evento?
Image
Quiero llamar "CargarNivel" por ejemplo cuando haga click sobre un objeto
Pero en las funciones del Evento "OnClick" no me aparece:
Image

Gracias

Re: Dudas Unity

Posted: Mon Sep 26, 2016 10:20 pm
by xacarana
Juan Pablo, trata poniendo el evento publico, la otra es usar alguno de los eventos disponibles, pero debes consultar cuando se disparan y para que sirve. O una opción mejor, pero todavía no la hemos visto es crear tu propio evento, usando delegados.

Re: Dudas Unity

Posted: Fri Oct 07, 2016 4:08 pm
by Sara.Rod
xacarana wrote:.
No se si puedo poner esto aquí o debería crear otro post,, pero tengo un problemita con Unity.
No puedo editar ningún script porque me sale esto cada vez que abro monodevelop :
Image
Se abre el script de Tiled2Unity automaticamente con estos errores,,
No he movido intencional (ni que me haya dado cuenta accidentalmente) el archivo del nivel, pero igualmente intenté:
1. Re-importar el archivo de Tiled desde tiled 2 unity
2. Guardar el archivo de Tiled bajo otro nombre y re-importar todo

Ninguna de estas opciones me ha funcionado.
El juego aún corre con normalidad, es solo cuando quiero editar un script que no me deja compilar :')

Me empezó a salir cuando creé un script de WaveSpawner, no estaba moviendo el nivel en ese momento, lo cual solo me confunde mas, ya que aunque le había cambiado unos tiles al nivel y reimportado eso fue el día anterior y seguía funcionando con normalidad :s

El repositorio está en bitbucket y ya lo compartí con tu cuenta,,

aiuda por favor, no se que hice,,

EDIT: Al final lo arreglé al quitar toda la parte de Tiled2Unity y re-importar todo el fondo,, pero me aparece este letrerito en mono develop, no se si tenga algo que ver

Image

Re: Dudas Unity

Posted: Mon Oct 10, 2016 12:34 am
by CalleSantiago
Ayuda por favor

Lo que pasa es que aún no logro que cuando la bala entre en colisión con un barco, se destruya cualquiera de los dos, he intentado creando un método de manera que cuando estén colisionando, se detecte un gameObject por el nombre y se destruya, pero no ocurre nada, si miran en el último if, sí logro destruir la bala pero solo cuando se sale del escenario, de otra manera no he podido, si me pueden dar ayuda o encuentran un tutorial que me sirva, lo agradecería mucho, feliz noche.

Código de la bala

Code: Select all

using UnityEngine;
using System.Collections;

public class Bullet : MonoBehaviour {
    private float speedBullet;
    Vector2 _direccion;
    bool isReady;

    void Awake()
    {
        speedBullet = 8;
        isReady = false;
    }

    public void setDirection(Vector2 direccion)
    {
        _direccion = direccion.normalized;
        isReady = true;
    }

    void Update () {
	if(isReady)
        {
            
            Vector2 position = transform.position;
            position = position + _direccion * speedBullet * Time.deltaTime;

            transform.position = position;
            Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0));
            Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1, 1));
         
            if((transform.position.x < min.x) || (transform.position.x > max.x) || 
                (transform.position.y <min.y) || (transform.position.y > max.y))
            {
                Destroy(gameObject);
            }           
        }
	}
}

Re: Dudas Unity

Posted: Mon Oct 10, 2016 10:19 am
by juanpa1612
CalleSantiago wrote:Ayuda por favor

Lo que pasa es que aún no logro que cuando la bala entre en colisión con un barco, se destruya cualquiera de los dos, he intentado creando un método de manera que cuando estén colisionando, se detecte un gameObject por el nombre y se destruya, pero no ocurre nada, si miran en el último if, sí logro destruir la bala pero solo cuando se sale del escenario, de otra manera no he podido, si me pueden dar ayuda o encuentran un tutorial que me sirva, lo agradecería mucho, feliz noche.
Proba con este código, de pronto puede servir:

Code: Select all

void OnTriggerEnter2D(Collider2D collider)
	{
		if (collider.tag.Equals ("Barco")) 
		{
			collider.gameObject.SetActive(false);
			Destroy(gameObject)
		}
    }
A todos los barcos les pones un Tag para que cuando la bala choque con uno de esos se destruya.

Re: Dudas Unity

Posted: Mon Oct 10, 2016 7:59 pm
by xacarana
Sara.Rod wrote: EDIT: Al final lo arreglé al quitar toda la parte de Tiled2Unity y re-importar todo el fondo,, pero me aparece este letrerito en mono develop, no se si tenga algo que ver
Que bueno que te pudiste defender, cuando se trabaja con plugins externos a unity se debe tener precaución ya que estos son programas que pueden tener algúns bugs, además puede que esten hechos para versiones anteriores de unity, por tanto es importante revisar los requerimientos técnicos, ya que Unity últimamente esta cambiando y deprecando funcionalidades.

Con respecto al letrero es normal cuando se trabaja con mac que aparezca ese letrero, se puede omitir, pero se recomienda convertir el formato como sugiere el mensaje, ya que he visto proyectos que dejan de compilar por un manejo de los saltos de línea y ese tipo de problema es dificil de detectar.

Re: Dudas Unity

Posted: Mon Oct 10, 2016 8:02 pm
by xacarana
CalleSantiago wrote: Lo que pasa es que aún no logro que cuando la bala entre en colisión con un barco, se destruya cualquiera de los dos
Nosotros vamos a ver un ejemplo de como solucionar este tipo de situaciones dentro de poco, por el momento la solución es poner colliders con trigger event, para que al producirse la collision se destruya la bala, sin embargo les adelanto que las balas no se deben destruir, sino que se deben reciclar, en algo que se llama object polling, de esta forma se recicla memoria.

Re: Dudas Unity

Posted: Sun Oct 16, 2016 10:04 pm
by Sara.Rod
xacarana wrote:
Sara.Rod wrote:
Profeee, me surgió otro problema con los scripts de Unidad, ayudaa

Estaba trabajando en ajustar la barra de salud, normal, cuando aparece un error como el de la clase, por no inicializar, bien
Image

Pero creo que no entendí que era lo que tenía que inicializar,,
Image

No se si se entiende bien pero actualicé el repositorio, ahí están los scripts completos,,

Re: Dudas Unity

Posted: Tue Oct 18, 2016 6:43 am
by xacarana
Revisa que el objeto unidad haya sido asignado antes de preguntar por el miembro dato salud.

Code: Select all

	if(unidad != null)
	{
	  anim.SetInteger(Estado_Salud,unidad.Salud);
	}
	else
	{
	   Debug.Log("La unidad no ha sido asignada");
	}

Re: Dudas Unity

Posted: Sun Oct 30, 2016 3:15 pm
by CalleSantiago
Aiuda

Aún no logramos solucionar que se detecten los barcos por el tag en el momento del disparo, las torres solo disparan a la primera oleada, intentamos ya con el "FindGameObjectWithTag" pero no funciona.
Agradeceríamos mucho una ayuda.

Code: Select all

if (dist <= distancia_umbral)
        {
            this.tiempo += Time.deltaTime;
            Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.green);

            GameObject enemig = GameObject.Find("Barco1");
            if (enemig != null)
            {
                if (this.tiempo > this.tiempoDeSalir)
                {
                    this.tiempo = 0;
                    GameObject bullet = (GameObject)Instantiate(CanonBall);
                    bullet.transform.position = transform.position;
                    Vector2 direction = enemig.transform.position - bullet.transform.position;
                    bullet.GetComponent<Bullet>().setDirection(direction);
                }
            }
           
            
        }