Jump to content

Feider

Fosiles
  • Content Count

    35
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Feider

  1. Gracias por las respuestas. ^,..,v Creo que miraré lo de UNET y Hamachi y buscaré opciones de servidor maestro que habéis comentado e investigaré para tirar por ahí. ^^ Me ha parecido interesante el tema del chat, que probaré también, quizá me de algunas buenas ideas aunque no sirva directamente. ^,..,^ Un saludo.
  2. Buenos días: Estoy desarrollando un juego en equipo y nos vimos al siguiente problema: Queremos hacer un multijugador con amigos conocidos. Es decir, yo creo una partida, y en lugar de un host online que las conecta, es el propio pc de uno de los jugadores. Los otros se conectarían a ese pc. Como si fuera un juego en Local, pero de manera online (Cada uno desde su casa). Estuve mirando un poco por internet y se recomendaba photon, pero al ver photon usaba un sistema de conexión tipo anfitrión en la red o eso estuve entendiendo... Mi problema es que ya he llegado a un punto que no sé exactamente cómo buscar o qué buscar para obtener lo que deseo conseguir... ¿Es muy descabellado o estoy entendiendo algo mal o si o si hay que tener un servidor en la nube que enlace esas partidas? ¿Cómo podría hacerlo o por dónde podría empezar? En caso de un servidor si o si ¿Valdría cualquiera o se necesita si o si uno especializado? Un saludo y gracias de antemano.
  3. No estoy muy puesto en el tema '^,..,^, pero se me ocurre una idea que quizá funcione. Aparentemente veo que el comportamiento es de tela, así que entiendo que usará huesos para permitir la deformación... Así que lo primero que pienso es que cada sección contable tiene un par de huesos y cuando "colisionan" desaparece, entendiéndose como cortado. No obstante seguro hay formas mejores. A ver si alguien más entendido sabe darte otra opción mejor. ¡Ánimo! ^,..,v
  4. Bueno, por fin creo que di con la respuesta, creo que hay formas mejores de hacerlo. Pero seguro a alguien puede servirle. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; [System.Serializable] public class Ingrediente { public const float PRECIO_MAXIMO = 9999f; public const int CANTIDAD_MAXIMA = 999; public const int CARACTERES_MAXIMOS = 30; public string Nombre; //[Range(0,9999)] public float Precio; //[Range(0, 999)] public int Cantidad; public override string ToString() { return Nombre; } } [ExecuteInEditMode] [CustomPropertyDrawer(typeof(Ingrediente))] public class IngredienteDibujar : PropertyDrawer { public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return base.GetPropertyHeight(property, label) + (EditorGUIUtility.singleLineHeight * 2); } public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); SerializedProperty pNombre = property.FindPropertyRelative("Nombre"); SerializedProperty pPrecio = property.FindPropertyRelative("Precio"); SerializedProperty pCantidad = property.FindPropertyRelative("Cantidad"); //Es mejor que cada propiedad sepa si "ha sido expandida" o no ya que las variables globales se aplican a todos los elementos. property.isExpanded = EditorGUI.Foldout(new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight), property.isExpanded, label); float laMitadX = Mathf.RoundToInt(position.width / 2); int margenNombre = 50; int margenPrecio = 50; int margenCantidad = 60; //Calculo las dimensiones de cada parte Rect nombreRect = new Rect(position.x + margenNombre, position.y + EditorGUIUtility.singleLineHeight, position.width - margenNombre, EditorGUIUtility.singleLineHeight); Rect precioRect = new Rect(position.x + margenPrecio, position.y + EditorGUIUtility.singleLineHeight * 2, laMitadX - margenPrecio, EditorGUIUtility.singleLineHeight); Rect cantidadesRect = new Rect(position.x + laMitadX - 20 + margenCantidad, position.y + EditorGUIUtility.singleLineHeight * 2, laMitadX - margenCantidad + 20, EditorGUIUtility.singleLineHeight); //Y dibujo las cosas en caso de que si esté expandido, o las oculto si no. if (property.isExpanded) { //Etiquetas para dar nombre EditorGUI.LabelField(new Rect(nombreRect.x - margenNombre, nombreRect.y, 100, position.height), "Nombre"); EditorGUI.LabelField(new Rect(precioRect.x - margenPrecio, precioRect.y, 100, position.height), "Precio"); EditorGUI.LabelField(new Rect(cantidadesRect.x - margenCantidad, cantidadesRect.y, 100, position.height), "Cantidad"); //Propiedades EditorGUI.PropertyField(nombreRect, pNombre, GUIContent.none); EditorGUI.PropertyField(precioRect, pPrecio, GUIContent.none); EditorGUI.PropertyField(cantidadesRect, pCantidad, GUIContent.none); //Control de los valores, se pueden usar los ranges pero por embellecimiento lo haré aquí. if (pNombre.stringValue.Length > Ingrediente.CARACTERES_MAXIMOS) pNombre.stringValue = pNombre.stringValue.Substring(, Ingrediente.CARACTERES_MAXIMOS); pPrecio.floatValue = Mathf.Clamp(pPrecio.floatValue, 0f, Ingrediente.PRECIO_MAXIMO); pCantidad.intValue = Mathf.Clamp(pCantidad.intValue, , Ingrediente.CANTIDAD_MAXIMA); } EditorGUI.EndProperty(); } } Un saludo ^^ P.D: Tal como lo tengo queda un poco feo ya que no logré ajustar los saltos de línea de forma inteligente. Probaré otro camino en el futuro.
  5. Por fin pude acceder al ordenador. Esto es el código que tenemos: ------------------------------------------------------------------------- [System.Serializable] public class Ingrediente { public string Nombre; [Range(, 9999)] public float Precio; [Range(, 999)] public int Cantidad; } [ExecuteInEditMode] [CustomPropertyDrawer(typeof(Ingrediente))] public class IngredienteDibujar : PropertyDrawer { public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); int sangria = EditorGUI.indentLevel; EditorGUI.indentLevel = ; float laMitadX = Mathf.RoundToInt(position.width / 2); Rect nombreRect = new Rect(position.x, position.y, position.width, 16); Rect precioRect = new Rect(position.x, position.y + 16, laMitadX, position.height); Rect cantidadesRect = new Rect(position.x + laMitadX, position.y + 16, laMitadX, position.height); EditorGUI.PropertyField(nombreRect, property.FindPropertyRelative("Nombre"), GUIContent.none); EditorGUI.PropertyField(precioRect, property.FindPropertyRelative("Precio"), GUIContent.none); EditorGUI.PropertyField(cantidadesRect, property.FindPropertyRelative("Cantidad"), GUIContent.none); EditorGUI.indentLevel = sangria; EditorGUI.EndProperty(); } } ------------------------------------------------------------------------ Nuestro objetivo es hacer que esas propiedades sean parte de un desplegable... Probamos a intentar con otra clase en el editor que afectara a eso, pero no hace nada... (m''' ¿Será que no entendimos bien la documentación?) Un saludo.
  6. Oh... Y yo pensando que era buena idea el OnGUI. '-,...,-, Gracias. Cambiaré mi modus operandi. A ver qué sale ^,...,^ (Aún no he tenido tiempo, pero veo que ya no es necesario que pegue el script). Intentaré publicar un resultado cuando pueda por si aparece alguien más con el mismo problema. (Aunque aún tardaré algunos días, que ando liado).
  7. Le echaré un vistazo. Eso lo he colocado en el OnGUI de la clase. (heredada del Editor que recibe un rect de posición, un GUIlayout y... otra cosa , ahora de cabeza no caigo) Lo único que hago es extraer las propiedades, crear los rect de posición y ordenar que ponga los parámetros. En cuanto pueda vuelvo a simular el código ya que ahora mismo no dispongo del original y no tengo mucho tiempo. Muchas gracias.
  8. Buenos días: Me encuentro en un camino sin salida ¿O tal vez estoy viajando por el lugar equivocado? Pero no logro encontrar solución a mi problema: Disponemos de una clase serializada con tres parámetros: Nombre, precio y cantidad. La cosa es que queremos que nombre aparezca arriba y cantidad y precio debajo en la misma linea. Pero este es el resultado... Y nosotros buscamos algo más así. Pero puesto de la forma de arriba... No logro atinar con la forma de hacerlo... ¿o quizá no es posible o no es buena idea? Un saludo.
  9. Gracias, me ha funcionado lo tuyo, Y no, pioj, uso la misma siempre para este sitio. Así que no es tema de las cookies. :(. Parece que ya podré entrar sin tener que reconstruir la dichosa contraseña. ^^ Un saludo.
  10. Buenos días: Llevo mucho tiempo ya que para entrar tengo que darle a olvidar la contraseña y restaurarla... Pongo siempre la misma contraseña, he mandado como 5 mensajes ya a los administradores y nunca he obtenido respuesta. ¿qué sucede para que mi contraseña nunca sea válida y siempre sea ignorada? Un saludo.
  11. Hola, Mi problema es un poco concreto pero aún así, en caso de ser solucionado, podría servir bastante. -Tengo un cubo con fisicas. -Cuando empujo al cubo, hace su giro. (PERFECTO, es el efecto deseado). -Bloqueo los ejes de giro en Y (no quiero que rote horizontalmente) y en Z(tampoco quiero que use giro lateral). Hasta aquí todo bien... ¿Pero por qué cuando se le pinza empieza a bailar cual peonza y se pone cómo le da la gana? 0,..,o. Es algo que me come por dentro el no saber por qué sucede y seguramente sabiendo el motivo, sea visible una solución limpia (o al menos clara). Un saludo.
  12. Buenos dias: No sé si este es el lugar adecuado, si me confundo, pido disculpas y si me aclaran dónde encaja mejor la pregunta la pondré ahí. El caso es que quiero hacer un juego para android en 3D. Y en mi pantalla funciona de maravilla, pero cuando lo testeo (con la herramienta de la appStore para debug en el dispositivo) se me pixela todo... ¿Estoy pasando algo por alto? ¿Tal vez eso es normal, pero y los otro juegos que no se pixelan? ¿O es cosa del debug que lo pasa en baja calidad? Un saludo.
  13. ¿Y si pruebas algo distinto? (Comprueba por si acaso en el debug a ver si es exactamente, pero en principio coges los dos menos y los dos más así. if(Input.inputString == "+"){ //miau miau miau miau miau } Un saludo.
  14. Gracias, pero me temo que lo que busco es el conocimiento para poder hacerlo. No obstante, quizá pague por el de 10 para destripar esos conocimientos y absolveros. ^,..,^
  15. Curioso, gracias pro la pregunta y la respuesta.
  16. Además de lo dicho arriba, diría un raycast ayudaría a asegurar que el personaje esté orientado adecuadamente... Lo demás es cosa de programación y buen gusto ^,..,v (Creo)
  17. Hola gente: Bueno, dispongo de un problema un tanto raro, creo. El caso es que por mucho que investigo y busco no logro conseguir nada... ¿qué estaré haciendo mal? Mi objetivo es "sencillo": Quiero pintar transparentes algunos vértices de mi malla. Para ello lo obvio sería recorrer la malla y ocultarlos... Pues no, no hay ni un sólo vértice, y cuando los encuentro, no sirve para nada lo que hago... Nunca me detecta cantidad de colores pero si cantidad de vértices... Y Aunque intente mover esos "vertices" (ya que son vector3 los intentaría cambiar) es como si no hiciera nada. También he intentado crearme mi propio shader, pero aún no los comprendo bien y el resultado fue nefasto (por no decir nulo) En resumen, me gustaría poder acceder a los puntos o triángulos de mi malla y poder modificar su visibilidad y su posición, pero creo que no estoy mirando adecuadamente. ¿O tal vez es algo imposible? Un saludo.
  18. OMC XD. No tengo eso que conseguiste pero creo saber hacerlo directamente por script... Si te sirve bien, si no, bueno... Ánimo ^,..,^. Vamos a ver, lo tengo un poco olvidado, pero a mi me funcionó sintetizar algo así, te lo explico y ya harás las pruebas ¿Si? (te copiaría mi código entero, pero creo que te haría un lío): Lo primero es ver la dirección de la gravedad (osease, desde el punto del personaje hasta el centro de gravedad. ¿Hasta ahí bien, no? Después debemos guardar la dirección de su altura, osea, de los pies a la cabeza, a veces es el Up,otras el forward... Eso lo sabrás tu supongo. (o usarla directamente luego XD como veas) La rotación la vamos obteniendo gracias a Quaternion.FromToRotation(direcciónAlturaPersonaje, direcciónGravedad)* RotacionPersonaje. (lo que recomiendo guardar en una variable aparte) Y ya luego lo rotas poco a poco(o de golpe directamente, eso ya como prefieras) con el Quaternion.Slerp(RotacionPersonaje, RotacionCalculada, Giro) Un saludo.
  19. No suelo usar el First person controller porque me produce algo de alergia... (Será que no me acostumbro a eso, algún día me pondré a experimentar con él) pero... Código código... No sé... Lo propio es que por script muevas lateralmente a tu personaje X distancia, si los "ataques" enemigos van a colisión, sencillamente ya no colisionaría... ¿no?. Para ello le añades una fuerza local (Si vas con fuerzas) o si no, si vas con el transform a secas... Le puede puedes hacer un translate en uno de sus ejes multiplicando por la distancia que quieres recorrer... (ya según lo tengas orientado tendrás que escoger entre forward, up y rigth (Creo que son esos))... Y si no, no sé a qué te refieres... Pero seguro por ahí van los tiros.
  20. Si, me pregunto si alguien conocerá la incógnita... ¿A lo mejor no se podrá? M''', por ahora no encontré nada. Bueno, al menos la mitad está resuelta.
  21. Hola: He estado indagando en un problema que tengo y obtuve al final media solución: A muchos, al menos al principio o si dependemos de un tercero que no sabe cómo llegan los objetos a Unity o lo que sea... Vemos que tenemos un objeto en X lugar y su rotación con lo mismo. (Unity cambia el centro de nuestros objetos al centro la escena... A veces es demasiado incómodo y otras útil... creo). Entonces pensé. "no puede ser que los de Unity no hayan pensado que como programador no vaya a querer acceder NUNCA a la rotación real del objeto y a su posición real"... Efectivamente, logré acceder a la posición real (por si alguien lo busca también ahora pongo como es esa parte del código). Pero me resulta imposible encontrar dónde está la rotación real: Posición real: transformDelObjeto.GetComponent<Renderer> ().bounds.center; Rotación real: ¿?. Y ahí me he quedado, yo sigo investigando, pero si alguien conoce la respuesta a mi incógnita sería de mucho agradecer. Un saludo. Edito: Es obvio que si voy al entorno de 3D y lo centro hago lo mismo, pero querría solucionar ese tipo de casos, resulta bastante más eficiente hacerlo por código. (Creo). ^,..,^ (Seguro que a más de uno le es útil también).
  22. Waf, menuda conversación, yo soy programador, pero hay muchas cosas que no sé y mucho por aprender, no creo que esto sea para que te hagan código, pero pienso que todos podemos aprender de todos... No sé... Da y recibe, ayuda y se ayudado. ¿no os parece? respondiendo a la duda inicial: Yo lo que haría sería poner unas variables públicas (en propiedades si lo prefieres para que puedas controlar lo que te metan y no te de fallos tontos, es cosa de pensarlo bien). Y luego solicitaría al jugador pedir qué tecla quiere según la que pulsa, como por ejemplo pasa en juegos como League of Legend, StarCraft(de este no estoy seguro pero fijo tiene)... Etc No sé si me explico con la idea. Mucho ánimo ^^.
  23. Tengo entendido que en los juegos así con gran presupuesto usan huesos en las capas y tal para simular sus movimientos en función a algo. Imagino que al tener los huesos también podrás deformar la maya en Unity (¿?). A ver si alguien responde mejor que yo y nos enteramos bien. Ánimo.
  24. ¿Has probado a mirar qué se ejecuta siempre? Lo malo del sistema de hilos de Unity es que puede que algo se haga antes que otro algo... -O eso pienso, quizá me confunda-. En cualquier caso me doy cuenta que dices tener muchos enemigos iguales... ¿Pero cuál estás cogiendo? buscar por tag pienso que o te traerá una colección de enemigos o el primero... Luego parece que usas esa clase globalmente... Si le da más enemigos ¿no te daría problemas? m'''. ¿por qué no pruebas a trabajar todo en un trigger o collision dentro del propio jugador sin variables globales que guarden enemigos? -Es una sugerencia, tal vez no te sirva...- (Tal vez no estoy entendiendo bien cómo haces tu scritp) Ánimo de todas formas.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...