Jump to content
UnitySpain

Search the Community

Showing results for tags 'inventario'.



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
  • El Blog de Pioj

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 15 results

  1. Buenas, Estoy creando la parte del inventario, donde poner una armadura u otra, arma y demás cosillas, me ha surgido una duda y he probado varias cosas pero sin éxito...os cuento Para los objetos me gustaría poder hacer lo típico que hubiera normales, mejores, épicos y así, de momento tengo varias imágenes, he probado a poner otra para hacer como de fondo y así poder poner el color que quiera...pero no queda bien ya que la imagen de la armadura también se colorea, y me gustaría que no fuera así Así seria un objeto normal, el gameobject es un botón al que le he puesto la imagen de la armadura A este oto le he añadido una imagen, fuera del gameObject ya que el botón tiene la de la armadura y no puedo meterle otra y me queda así Muchas gracias!!
  2. Buenas!. Quiero consultarles a la comunidad si alguien hizo o tiene idea de como seria la lógica de lo siguiente: Tengo hecho un inventario de selección de objetos, lo que quiero hacer y no me sale es que cuando el Inventario 1 este lleno, que los objetos que recoja se pase al inventario 2 y que del inventario 2 pueda hacer un drag and drop con el inventario 1. ¿No se si me explico? ¿alguien me podria dar alguna orientación de cómo seria la logica para esto P/D El inventario 1 es el principal y de donde puedo seleccionar y usar los objetos, el inventario 2 vendría hacer una especie de caja donde me guarda los ítems que no puedo recoger del inventario 1 por estar lleno y por ende se guardan aquí, pero si los quiero usar los tengo que pasar al inventario 1, y esa mecánica no me sale.
  3. Hola a todos! Les cuento que estoy teniendo un problema con una script de inventario que estoy utilizando de este video: Para que no tengan que ver todo el video les voy a indicar las partes puntuales. Verán mi problema es que en la función "AgregarAlgoAlInventario"(38:05) si bien se crea un "item" y si agrego otro de igual id se suman sus cantidades, solo pasa con el primer objeto de la lista(la lista de ObjetoInvId) ya que si agrego otro item con distinto id se crea un nuevo "slot",osea se adiciona un nuevo objeto en la lista(hasta ahí todo bien), pero al agregar otro item igual(mismo id que el segundo item) al segundo item se le suma la cantidad correcta, pero además se me crea otro slot y así sucesivamente. Ya que quizas lo explique medio para el tuje les dejo un gif: El element 0 es el priemer item al cual al seguir agregandolo aumenta su cantidad y no se duplica. Ya los otros elementos como pueden ver tienen el mismi id pero se agregan en slots separados(aunque un detalle es que el Element 1 va aumentando su canidad en base a los nuevos duplicados de este) Bueno ese es en sí el error les dejo toda la script por si las dudas, aunquecreo que el error debe estar en la función que nombre arriba(pareciera que no respeta el return : p): using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; public class Inventario : MonoBehaviour { [System.Serializable] public struct ObjetoInvId { public int id; public int cantidad; public ObjetoInvId(int id, int cantidad) { this.id = id; this.cantidad = cantidad; } } [SerializeField] Database data; [Header("Variables del Drag and Drop")] public GraphicRaycaster graphRay; private PointerEventData pointerData; private List<RaycastResult> raycastResults; public Transform canvas; public GameObject objetoSeleccionado; public Transform ExParent; [Header("Prefs y items")] public Transform Contenido; public Item item; public List<ObjetoInvId> inventarioo = new List<ObjetoInvId>(); void Start () { ActualizarInventario(); pointerData = new PointerEventData(null); raycastResults = new List<RaycastResult>(); } void Update () { Arrastrar(); if (Input.GetKeyDown(KeyCode.F)) { AgrregarItem(1, 1); } if (Input.GetKeyDown(KeyCode.G)) { AgrregarItem(3, 1); } } void Arrastrar () { if (Input.GetMouseButtonDown()) { pointerData.position = Input.mousePosition; graphRay.Raycast(pointerData, raycastResults); if (raycastResults.Count > ) { if (raycastResults[].gameObject.GetComponent<Item>()) { objetoSeleccionado = raycastResults[].gameObject; ExParent = objetoSeleccionado.transform.parent; ExParent.GetComponent<Image>().fillCenter = false; objetoSeleccionado.transform.SetParent(canvas); } } } if(objetoSeleccionado != null){ objetoSeleccionado.GetComponent<RectTransform>().localPosition = CanvasScreen(Input.mousePosition); } if(objetoSeleccionado != null) { if(Input.GetMouseButtonUp()){ pointerData.position = Input.mousePosition; raycastResults.Clear(); graphRay.Raycast(pointerData, raycastResults); objetoSeleccionado.transform.SetParent(ExParent); if(raycastResults.Count > ){ foreach(var resultado in raycastResults){ if(resultado.gameObject == objetoSeleccionado) continue; if(resultado.gameObject.CompareTag("Slot")){ if(resultado.gameObject.GetComponentInChildren<Item>() == null){ objetoSeleccionado.transform.SetParent(resultado.gameObject.transform); Debug.Log("Slot libre"); } } if(resultado.gameObject.CompareTag("Item")){ if(resultado.gameObject.GetComponentInChildren<Item>().ID == objetoSeleccionado.GetComponent<Item>().ID){ Debug.Log("Tienen el mismo ID"); resultado.gameObject.GetComponentInChildren<Item>().cantidad += objetoSeleccionado.GetComponent<Item>().cantidad; Destroy(objetoSeleccionado.gameObject); }else{ Debug.Log("Distinto ID"); objetoSeleccionado.transform.SetParent(resultado.gameObject.transform.parent); resultado.gameObject.transform.SetParent(ExParent); resultado.gameObject.transform.localPosition = Vector3.zero; } } } } objetoSeleccionado.transform.localPosition = Vector3.zero; objetoSeleccionado = null; } } raycastResults.Clear(); } public Vector2 CanvasScreen(Vector2 screenPos){ Vector2 viewportPoint = Camera.main.ScreenToViewportPoint(screenPos); Vector2 canvasSize = canvas.GetComponent<RectTransform>().sizeDelta; return(new Vector2(viewportPoint.x * canvasSize.x, viewportPoint.y * canvasSize.y) - (canvasSize/2)); } public void AgrregarItem (int id, int cantidad){ for (int i = ; i < inventarioo.Count; i++){ if (inventarioo[i].id == id) { inventarioo[i] = new ObjetoInvId(inventarioo[i].id, inventarioo[i].cantidad + cantidad); ActualizarInventario(); return; } inventarioo.Add(new ObjetoInvId(id, cantidad)); ActualizarInventario(); } } public void EliminarItem(int id, int cantidad) { for (int i = ; i < inventarioo.Count; i++) { if (inventarioo[i].id == id) { inventarioo[i] = new ObjetoInvId(inventarioo[i].id, inventarioo[i].cantidad - cantidad); if (inventarioo[i].cantidad <= ) { inventarioo.Remove(inventarioo[i]); ActualizarInventario(); return; } } Debug.LogError("No hay nada que eliminar!"); } } List<Item> pool = new List<Item>(); public void ActualizarInventario () { print("Inventario Actualizado"); for (int i = ; i < pool.Count; i++) { if(i < inventarioo.Count) { ObjetoInvId o = inventarioo[i]; pool[i].ID = o.id; //Aqui le asigno la id del objeto a mi script llamada Item pool[i].GetComponent<Image>().sprite = data.baseDatos[o.id].icono; pool[i].GetComponent<RectTransform>().localPosition = Vector3.zero; //Esto lo hagoya que al utilizar slots y meter alli los items se me produce un error en la posicion pool[i].cantidad = o.cantidad; pool[i].gameObject.SetActive(true); } else { pool[i].gameObject.SetActive(false); } } if(inventarioo.Count > pool.Count) { for (int i = pool.Count; i < inventarioo.Count; i++) { Item it = Instantiate(item, Contenido.GetChild(i)); //Aqui el getchild(i) lo utilizo para crear el itemdentro del slot pool.Add(it); it.transform.position = Vector3.zero; it.transform.localScale = Vector3.one; ObjetoInvId o = inventarioo[i]; pool[i].ID = o.id; //Aqui le asigno la id del objeto a mi script llamada Item pool[i].GetComponent<RectTransform>().localPosition = Vector3.zero;//Esto es por lo mismo que aclare arriba pool[i].GetComponent<Image>().sprite = data.baseDatos[o.id].icono; pool[i].cantidad = o.cantidad; pool[i].gameObject.SetActive(true); } } } } En donde hice anotaciones es debido a que el sistema de drag and drop lo saque de otro canal y tuve que adecuarlo. Gracias de antemano : )
  4. 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.
  5. Hola muy buenas a todos les vengo a hacer unas consultas rápida. 1) Es muy complicado hacer un inventario basico (dificultad de programacion) 2) Hay algún buen tutorial que explique para unity 5 3) Si es posible en JS Mi idea de inventario era como el típico inventario que hay ej 20 slot y puedas arrastrar los item a cualquier slot y sea acumulable. Gracias por leer.
  6. Quiero hacer un inventario con un canvas y los Scrips de Drag and Drop, donde el Canvas contenga paneles y dentro de los panel, hay botones y esos botones puedan ser arrastrados de un panel a otro. Alguien sabe como?
  7. Hola!!! Bueno estoy intentando algunas cosas para el inventario de mi juego, en estos momentos voy en que tome el objeto, la informacion y luego coloque el icono y elimine el objeto. Lo que pasa es que necesito modificar la textura de un boton o imagen del canvas (no importaria si fuese un boton o una imagen) y no se como podria acceder a la variable "Texture" del boton/imagen que proporciona el canvas. Podrian decirme como podria hacer en ese caso. Espero puedan ayudarme.Gracias. Chau.
  8. Hola!!! Estoy haciendo el inventario de mi juego y necesito hacer un boton que cambie a otra interfaz (esto se hacerlo).El problema es que no tengo la mas minima idea de si puedo hacer una imagen que funcione como boton, porque no quiero esos botones de unity ni nada por el estilo,tengo una imagen ya echa y necesito que cuando el jugador pulse encima se cambie la interfaz, entonces como haria para que revisa el clic del mouse? Lo otro seria que digamos que si pueda hacer lo que quiero arriba,tambien podria añadirle un label? osea que cuando pases el mouse por encima saque un mensaje? Gracias. Chau.
  9. hola, estoy trabajando en un menu de inventario, en el cual tengo varios items (los items son botones) y necesito poder equipar al personaje con un item, el problema que tengo es que; no se como determinar cual boton esta seleccionado (highlight). en el menu se debe seleccionar un item y presionar la tecla "E" (no puedo usar enter, ya que al dar clic en el boton se despliega informacion del item), necesito saber como determinar que boton esta seleccionado, para saber que item se desea equipar. he estado probando con las funciones de eventsystem, pero no encuentro la madera de saber que boton esta seleccionado.
  10. Hola amigos , me descargué un script para hacer un inventario.Lo modifiqué un poco por que daba errores y ahora me da un nuevo error que no se solucionar :S . Este es el error : "Assets/Inventory/Resources/Editor/InventoryEditor.js(318,47): UCE0001: ';' expected. Insert a semicolon at the end." Ya he puesto un punto y coma al final de esa línea pero nada , sigue saliendo el mismo error La script es demasiaaaado larga (350 líneas) , por lo que dejaré un link de descarga para facilitaros el trabajo (recomiendo abrirlo con el MonoDevelop o Notepad) Link : https://mega.nz/#!owxCxSrD!yEDA1hP-rKdFzPqjT9rdOvzUFGVTadwtX8eoGRJxLDs InventoryEditor.js
  11. Buenos dias/tardes a todos, bueno soy programador y tambien universitario y llevo entrando a creacion de juegos al estilo 2D indie, por lo cual me ah surgido una gran pregunta. Como se puede cambiar la vista de un personaje dependiendo sus objetos? Por ejemplo : El personaje a primeras comienza sin nada.Luego encuentra un item (pantalon) y lo equipas en su inventario y ya a la vista cambiaria asi.Ejemplo (imagen): Hay alguna manera de que si el escoje ese item en su inventario y se lo "equipe" aparesca como vista en nuestro personaje? En pocas palabras : que aparesca reflejado el equipo que anda activo. Espero me puedan ayudar, y de antemano muchas gracias.
  12. Buenas estoy probando a tener un pequeño inventario/menú con 5 elementos diferentes el caso es que el método GUI.Box http://docs.unity3d.com/ScriptReference/GUI.Box.htm es un método de tipo void y por lo cual no me devuelve nada, y me gustaría manipular este menú mediante las teclas, es decir algo parecido a esto: -Ver imagen. Mi idea es que pudiera acceder a estas distintas cajas mediante un array, pero lo dicho, como no devuelve nada no se como acceder a ello, ¿alguien tiene alguna idea, o ha tenido una situación parecida? Un saludo y gracias.
  13. Buenas para mi proyecto necesito saber si se pueden poner objetos que aparezcan en diferentes posiciones por una zona a establecer o por coliders/triggers o de alguna otra forma, o seria mejor poner muchos spawpoints a los puntos donde podrian aparecer, no se si conoceis algun tutorial sobre esto, seian objetos que se les pudiera poner un tiempo determinado para que aparezcan dependiendo del valor del item... ¿algun alma caritativa no tiene nada que hacer estos dias y quiere hacer un bien social...en forma de scrips, o colaborar, orientar, etc?.
  14. Hola¡¡ Me acabo de registrar y es la primera vez que llego a hacerlo(registrarme en un foro para pedir ayuda).Agradezco vuestro trabajo y disponibilidad. El problema es que estoy haciendo un inventario y es para oculus rift (OVR).Aquí la función OnGui no sirve, lo tengo que hacer con Canvas y por lo que estoy viendo parece más sencillo, digo parece porque estoy intentando: Mover un objeto hijo del canvas, situado en el escenario al inventario.... He creado un script en el objeto que cuando pasas, se mueve a la posición de la celda pero el objeto coge una posición que no coincide con lo que he intentado asignarle... private var botiquin : vida; function Start () { botiquin = GameObject.Find("OVRPlayerController").GetComponent(vida); } function OnTriggerEnter (Col : Collider) { if(Col.tag == "Player") { transform.position.x -= 177; transform.position.y += 169; transform.position.z = 0; } } Lo he intentaod con = +=,-=....ya a la deseperada Conozco los conceptos básicos para programar y puedo enteneder explicaciones más técnicas. Muchas Gracias¡¡¡¡¡ Saludos¡¡¡
  15. Hola uniteros. Estaba estudiando la forma de crear un inventario para mi juego. Es un inventario grande, y subdividido en muchas categorias. Carga datos de archivos XML, al menos en la primera vez, quedando esta información guardada en memoria. Detecta el estado "Hover/Encima de", en sus botones para que muestre información con el puntero del mouse. Elejí hacerlo con elementos UI, ya que me permiten entre muchas cosas, detectar el estado Hover. Cargo alrededor de 50 casillas con la información de sus distintos objetos y 5 pestañas que me llevan a otros inventarios, destruyendo los anteriores y generando los posteriores. El caso que quizas lo vea pesado en rendimiento, ya que el juego pega un bajón de FPS aunque solo sea en un segundo, cuando lo invoco y/o cuando destruye todos los objetos. - Quería saber la mejor forma de optimización, con inventarios complejos. (UI...GUI...etc..) - ¿Cuando cierro el inventario, o cambio de pestañas, es mejor destruir los objetos o desactivarlos? - La información obtenida de todos los objetos, ¿es mejor tenerla en memoria una vez cerrado el inventario? En algunos casos no necesito retener en memoria toda la información de los objetos y he pensado que cada vez guarde esa info en un XML para su posterior leida. Un saludo.
×
×
  • Create New...