Jump to content

Recommended Posts

Buenas, chic@s.

 

Estoy haciendo un sistema de inventarío, pero estoy atascado en esta zona, lo que sucede es que cuando pulso la tecla "E" no ejecuta el "if", si no, que pasa directamente al "else", y no se que cambiar de esa linea, espero que con esta parte del código sea suficiente.


             

  if (Input.GetKeyUp(KeyCode.E))
                {
                    float index1 = Random.Range( ,slots.Length );
                    int index = Mathf.RoundToInt(index1);
                    print(index);

                    slotBusqueda = GameObject.FindGameObjectWithTag("Slot").GetComponent<InvSlotsInfo>();


                        if (slotBusqueda.oNumero == Hit.transform.gameObject.GetComponent<invobjectinfo>().numero)
                        {
                            slotBusqueda.cantidad = slotBusqueda.cantidad + Hit.transform.gameObject.GetComponent<invobjectinfo>().cantidad;
                            Destroy(Hit.transform.gameObject);
                        }

                        else
                        {
                            slots[index].oNumero = Hit.transform.gameObject.GetComponent<invobjectinfo>().numero;
                            slots[index].cantidad = slots[index].cantidad + Hit.transform.gameObject.GetComponent<invobjectinfo>().cantidad;
                            Destroy(Hit.transform.gameObject);
                        }


                }

 

 

Espero que me puedan ayudar, un saludo.

Share this post


Link to post
Share on other sites

Y ese GeyKeyUP? (deberia ser down si queres que pase cuando se presione) , segun eso que tenes se mete en el primer if cuando soltas la letra E, es decir apretas...no pasa nada....la soltas y se mete.

fijate que los FindGameObjectWithTag y los find en general son lentisimos, nunca los uses en update usalos antes, ya tenelos referenciados.

Share this post


Link to post
Share on other sites

A ver ... aunque se salga de tema tengo que decirlo xD te mereces un premio por tener una reputacion de -1 en el foro de UnitySpain, eres la primera persona que veo con el dudoso honor (no digo que tengas porque ser la unica, pero nunca lo habia visto). Ni yo he conseguido eso, y mira que me he llevado rapapolvos y he discutido en este foro ... lo tuyo se podria catalogar de hazaña epica :4_joy:

Confieso que cuando he visto ese prodigioso rango, la curiosidad me ha podido por lo que a continuacion he visitado tu perfil y me he puesto a leer tus intervenciones/aportaciones en el foro por si podia aprender algo nuevo ... la verdad es que no me ha llevado mas de 3 minutos (9 posts en 3 años, no se puede decir que destaques por tu gran actividad).

Pero tengo que confesar que lo que mas me ha llamado la atencion ha sido el hecho de que modificaras hoy mismo (05/10/2017) un post de hace 3 años (03/12/2014) para borrar el contenido ... lo que me provoca mucha curiosidad por saber lo que ponia xDDD

Dicho todo eso, como te ha apuntado @lightbug, si quieres que algo suceda en el momento de presionar una tecla tienes que decirle que ocurra con el evento Down (abajo) en lugar de Up (arriba). Yo aconsejaria aprender algo de ingles, no hace falta un nivel pro pero si lo mas basico como minimo ... si os motiva, pensar que estas cosas como el Down y Up son lo que enseñan en la asignatura de ingles a niños de 3º - 4º de primaria por lo que si un niño que tiene 9-10 añitos es capaz a aprenderlo, tu tambien podras.

Tambien hay que decir, como muy bien te ha comentado el mencionado compañero (aunque el haya sido mucho mas delicado), eso es una mierda de codigo desde el punto de vista del rendimiento. Un bloque de codigo, que encima se ejecutara en el Update, de tan solo 10 lineas que contine FindGame + 5 GetComponent no tiene calificacion posible.

Share this post


Link to post
Share on other sites
7 hours ago, Arthure said:

te mereces un premio por tener una reputacion de -1 en el foro de UnitySpain

:52_fearful::52_fearful::52_fearful: miraaa no me di cuenta jajaj como es que terminas con -1? pioj te da los negativos?

 

Share this post


Link to post
Share on other sites

-1 ?

es increible!

como se quitan puntos? conducias borracho? jeje

sobre "Hit... ...GetComponent" repetidas veces:

podrias almacenarlo en una varible(la he llamado "itemInfo"), justo despues de la linea slotBusqueda = GameObject.FinGameObjectsWhitTag, para no tener que buscar el componente tantas veces, ....igual que haces con "slotBusqueda"

invobjectinfo itemInfo = 

Hit.transform.gameObject.GetComponent<invobjectinfo>();

y luego solo comparar "slotBusqueda" con "itemInfo"

 

sobre que no se ejecuta bien lo de la tecla "E"....

es lo que dice @lightbug:

GetKeyDown = true: justo cuando pulsas la tecla

GeyKey = true: mientras mantengas pulsada esa tecla

GetKeyUp = true: justo cuando sueltas la tecla

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...