Jump to content
UnitySpain

unit3ro

Fosiles
  • Content Count

    9
  • Joined

  • Last visited

Community Reputation

0 Neutral

About unit3ro

  • Rank
    Recién Llegado

Recent Profile Visitors

231 profile views
  1. Lo se pero tengo tres dias en eso, y no logro dar con la solucion. El problema esta aqui cuando quiero almacenar el item a un librolibro temporal creado para despues guardarlo en el arraylist de libros BOOK tempBook = new BOOK(); tempBook.items[i] = Items[i];
  2. He hecho el script nuevamente y lo probe, este lee a partir de un archivo y crea las hojas/items, pero no puede crear los libros y almacenarles las hojas. using UnityEngine; using System.Collections; using System.Collections.Generic; //=================================// public class BooksGenerator3: MonoBehaviour { public TextAsset TextData = null; private string[] strData; // = "book1+102+M7,M8,M9,I15,I16,I17,I18,J8,J9,J10/book2+103+I14,I15,I16,I17,V14,V15,V16,V17,V18/"; [System.Serializable] public class ITEM { public string[] itemData = new string[2]; public string[] words; } [System.Serializable] public class BOOK { public ITEM[] items; } public BOOK[] inventory; public ITEM[] items; //=================================// void Start () { strData = TextData.text.Split(new char[] {'/'}); items = processItems(strData); inventory = generateBooks(items); for(int x=0; x<inventory.Length; x++) { print("curBook: " + inventory[x].ITEM.itemData); } } //=================================// public ITEM[] processItems(string[] strData) { ITEM[] tempItems = new ITEM[strData.Length]; for(int s=0; s<strData.Length; s++) { string[] curData = strData[s].Split(new char[] {'+'}); ITEM newItem = new ITEM(); newItem.itemData[0] = curData[0]; newItem.itemData[1] = curData[1]; newItem.words = curData[2].Split(new char[] {','}); tempItems[s] = newItem; } return tempItems; } //=================================// public BOOK[] generateBooks(ITEM[] Items) { ArrayList firstBooks = new ArrayList(); for(int i=0; i<Items.Length; i++) { BOOK tempBook = new BOOK(); tempBook.items[i] = Items[i]; firstBooks.Add(tempBook); } return firstBooks.ToArray(typeof(BOOK)) as BOOK[]; } }
  3. Hola comunidad Me he visto en la necesidad de solicitar la ayuda de ustedes, pues me encuentro atascado en un script que necesito. Adjunto dejo el codigo, no esta probado y seguro tiene algunas palabras mal escritas, pero es la idea que tengo. en los comentarios describo el problema plateado esta en la funcion "generarLibros", no doy con los bucles esos para repetir cada revision de datos. No se si trabajar con string es la mejor manera, cualquier consejo me vendria muy bien. Una ayudita por favor. using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Linq; public class generadordelibros : MonoBehaviour { /*las letras seria lo encerrado en comas (cada letra seguida de numero)y las hojas serian cada parte del string separado por slash (/), mas adelante se crearan arrays de strings a parir de este usando string.split */ private string strData = "a1,a2,c1,z2/d6,f6,s4/s5,r2,k6" public struct libro { public hoja[] hojas; public libro(hoja[] hojas) { this.hojas = hojas; } } public class hoja { public string[] letras; } void Start () { hojas = procesarHojas(strData); libros = generarLibros(hojas); } private hoja[] procesarHojas(string strData) { hoja[] hojasTemp = new hoja[strData.Length]; //separar cada hoja por (/) strData = strData[s].Split(new char[] {'/'}); for(int s=0; s<strData.Length; s++) { hoja nuevaHoja = new hoja(); //separar cada letra por (,) nuevaHoja.letras = strData.Split(new char[] {','}); hojasTemp[s] = nuevaHoja; } return hojasTemp; } public libro[] generarLibros(string[] hojas) { List<libro> libros = new List<libro>(); for (int k; k<hojas.Length; k++){ /*por cada hoja comparar las letras dentro de ella con las de dentro de cada hoja en cada libro, si existe almenos una crear otro libro y añadirle las hojas, si no existen en el actual libro (ni siguiera una) añadirlas al libro. la idea es queue se generen todas las combinaciones posibles de libros para que cada grupo de hojas esten en libros diferentes sin repetirse en el mismo libro. */ } return libros.ToArray(); } }
  4. Hola francoe1 Hace un par de meses ya habia visto ese video y descargue los proyectos de ejemplo, y la verdad no le veo la diferencia con lo que ofrece mecanim, pero bueno. Estoy contento con los resultados preliminales, cambie la funcion a FixedUpdate y funciona mucho mejor, tambien consegui un scrip y que modifique a mi necesidad, era para un hovercar, lo he usado en unity v5, en la escena de prueba y con un simple ajustador de la posicion de los pies y funciona de maravilla, el personaje se desplaza suavemente y nunca pierde el contacto con el suelo, salvo que no haya. Hasta ahi todo bien, ahora resta colocarle los capsule colliders en todo el cuerpo para que no traspace las paredes, pero como triggers. cualquier metacodigo es bien recibido. Mi idea es que cada extremidad independientemente detecte contacto con otros colliders y se aplique una fuerza o movimiento a esa extremidad en direccion contraria al contacto. Gracias por leer. el escript puede que tenga palabras mal escritas, lo reescribi de mi mente porque no lo tenia a mano. using UnityEngine; using System.Collections; public class HoverPelvis : MonoBehaviour { public float hoverHeight = 0.97f; public float thusForce = 200; public float damping = 20; public Vector3[] thrusters; public float castLength = 0.96f; public float spheRad = 0.01f; void Satart () { rigidBody = GetComponent<Rigidbody>(); } void FixedUpdate () { RaycastHit hit; for (int = 0; i < thrusters.Length; i++) { Vector3 wdThuster = transform.TransformPoint(thrusters[i]); if (Physics.SphereCast(wdThruster, sphRad, -transform.up, out hit, castLength)) { Debug.DrawLine(wdThruster, hit.point, Color.red); float discrep = hoverHeight - hit.distance; float upVel = rigidBody.GetRelativePointVelocity(wdThruster).y; rigidBody.AddForceAtPosition(transform.up * (thrustForce * discrep - upVel * damping), wdThruster); } else Debug.DrawRay(wdThruster, -transform.up * castLength, Color.green); } }
  5. Para lo que quiero hacer, usar un capsule collider general que cubra el personaje es una estupides descomunal, ese estupido metodo es el mas torpe, la capsula no tiene la forma de una persona y nunca se relacionara con su entorno de manera similar a una persona, por ejemplo una caja rozando con una superficie nunca tendra la misma reaccion que una esfera en cuanto a rozamiento se refiere, olvida eso que es a lo que estoy reullendo, mi personaje estara saltando por todos lados y metiendose en espacios estrechos por eso la idea de usar trigers, nos estamos saliendo del tema. Mi meta es que dos raycast o dos spherecast (preferiblemente para mas precicion) determinen la posicion de los pies y hacer una media entre las dos alturas de contacto que sera la altura del personaje, eso esta solucionado y es estable el problema es que no siempre me detecta la superficie debajo y la traspasa, solo eso. cuando tenga tiempo hare pruebas en fixedupdate. Cuando digo "entiendo a la perfeccion" me reiero a lo que escribiste, osea que le capto la idea capichi.
  6. Hola, que tal Entiendo a la perfección, este es mi caso. Mi personaje tiene adjunto por todo el cuerpo capsuleColliders como animFollow, pero serán usados como trigers, para detectar cuando este en contacto con el escenario. Los uso como trigers para que no queden atascados en el escenario como suele pasarle mucho al personaje de animFollow. Entonces estoy buscando la forma para que el personaje detecte el suelo pero usando un raycast en cada pie a veces parece no funcionar, es posible que sea porque lo estoy haciendo en Update() y no en FixedUpdate, lo probare. Buscando una solución intente con wheelColliders, si ya sé que es una locura porque no es un vehículo, pero funciona perfectamente, salvo que cuando el personaje se sitúa en una superficie a una altura considerablemente diferente a la anterior sale despedido hacia el cielo con un salto exagerado, se podría eliminar este molestoso efecto? en tal caso voy a probar con fixedUpdate y luego les cuento los resultados. Gracias por tu atencion
  7. Supongo que ahora debo reírme por tu chiste. Si no estás dispuesto a ayudar no estropees mi solicitud de ayuda, es obvio que el corrector del celular lo hizo de nuevo, lo escribí mientras iba conduciendo y tuve que ahorrar palabras. Esto era lo que queria escribir:
  8. Hola a todo Estoy usando un raycast para evitar que mí personaje atraviese el piso porque no estoy usando colicionadores pero a menudo lo atraviesa. Parece que en algún frase no detecta nada. Me he fijado que con los whellcoliders no sucede eso. Mí pregunta es, que debo hacer para que funcione como los whellcoliders? Sería porque están hechos en código interno osea del? Gracias
×
×
  • Create New...