Jump to content
UnitySpain

Search the Community

Showing results for tags 'help'.



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. Hola, tengo el siguiente problema. Tengo un juego completado pero tengo un problema y es que las fisicas de lo que son las motos noto que algo esta mal, el problema es que se maneja con el touch de la pantalla y girando el movil,por ejemplo, si saltas y vas por el aire y en el aire intentas balancear la moto, cuando la moto baja de detras o la bajas de delante funciona bien el problema es que si la bajas por ejemplo de la parte trasera y subes la delantera y luego intentas equilibrarla o ponerla al contrario, al pasar por el angulo 0 (angulo medio) como que se queda congelado una milesima de segundo. He intentado de todo pero no consigo solucionarlo, si levantar la moto de delante es angulo positivo y el bajarla hacia abajo es angulo negativo, al cambiar de positivo al negativo es cuando entra ese freezetime, alguien me podria ayudar porfavor? Gracias de antemano
  2. Hola!! Primero que nada exitos para lo que sea que esten haciendo, sea proyecto o sea creatividad (osea no estar haciendo nada). Bueno, estoy haciendo un juego en una compu del 2005 y obligatoria mente estoy haciendo un juego "pixelart" (de arte no tiene nada pero es pixelado) Cuestion que nunca me imagine que las resoluciones a la hora de publicar sean un problema... al fin de al cabo son pixeles los que tengo que procesar y se deben ver como son sin nada de filtros raros ni mucha chucheria, PERO COMO TODO EN PROGRAMACION Siempre esta esa piedrita que se te mete en la nariz y quedas... resfriado claro, y te tosquea todo el lindo camino que venis haciendo. Problema: Hago sprites de 48x48 donde por unidad tengo 48 pixeles hacia arriba, y 48 pixeles hacia los lados, en donde configuro el sprite de la siguiente manera: 1 per unit -> Pixeles Per Unit: 48 Filter Mode: Point Compression: None Hasta aca todo bien.. Resulta que cuando la camara tiene que renderizar pixeles le agarra algo y los deforma Bueno, ahi esta mi problema EN BRUTO Resulta que estube leyendo y hay que retocar siertas cosas a la hora de renderizar pixeles perfectos y es que hay que configurar el Orthographic Size (Basicamente es cuantas unidades renderiza verticalemente) En el cual hay un calculo matematico que da como resultado el Size correcto: Ortographic Size = Desired Height / (2 * pixels per unit) Ok? hasta aca todo barbaro. PERO resulta que cuando aplico la formula me cambia el Size claro por supuesto, pero de mala manera ya que cada resolucion tiene diferentes sizes y si hablamos de diferentes sizes hablamos de diferente tamaño de camara y todo, ACA ESTA MI PROBLEMA Como hago yo para tenes pixeles perfectos y mantener el campo de vision igual de mi juego, aca van ejemplos para que me entiendan: ESTO QUIERO QUE SE VEA: Que pasa si descarga el juego un celular con resolucion (W: 480 x H: 854) 480/(2*48) Orthographic Size: 5 Los pixeles se ven perfect pero me caga el campo de vision... Ven a lo que me refiero? No hace falta mas ejemplos creo. Alguna solucion? Como manejo varias resoluciones sin problemas? De ultima puedo poner una resolucion fija, como lo hago? Desde ya cualquier respuesta es bienvenida y me sirve, saludos!
  3. Hola, buen dia! Tengo problemas con mover, el famoso deltatime, hay algo que no me cierra... Que pasa con los fps(frames por segundo) que van mas rapido que otros (dependiendo el hadware)? Como funciona esto? Aunque vaya mas rapido o mas lento, no deberia ir siempre igual? en terminos "actualizacion de cada frame" Por ejemplo... Quiero contar 1 2 3, con 1 segundo de intermedio, 1...2...3.... SI TENGO 60 fps.. 20fps... 15fps... 100fps... 300fps... QUIERO QUE AUQUE SE VEA PARA EL CULO CUENTE 1 2 3 en 3 segundos... Como logro eso??? Por que me surgio esta duda?.. Bueno mi cuestion es la siguiente.. Me muevo de pi a pa llendo y viniendo, en un IEnumerator... Que pasa.... cuando actualizo frame por frame me va bien... cuando dejo fluir el juego se vuelve loco... Le puse mucho speed aproposito Speed: 12 Estado: play Estado: frame por frame Script: https://ghostbin.com/paste/fnq8k NO LE DEN BOLA AL "yield return new WaitForSeconds(0.2f)" Es para cuando este inabilitado actualize menos frames para rendimiento, pero es indiferente cuando empieza la secuencia de movimiento. Que pasa?
  4. Buenas, tengo un pequeño problema, estoy terminando un código, y resulta que me aparece un error y no soy capaz de encontrar la solución, quería saber si alguien podría ayudarme. Aquí dejo el error: "Assets/Scripts/Manager.cs(221,20): error CS0161: `Manager.ObtenerInfo(Cuadricula)': not all code paths return a value" Y aquí el código: using UnityEngine; using System.Collections; using System.Collections.Generic; public class Manager : MonoBehaviour { public int TamañoX, TamañoY; GameObject [] _items; public Cuadricula[,] BidItem; Cuadricula ItemActual; public static int minItemsPorEncuentro = 3; bool Jugando; void Start () { Jugando = true; ObtenerItems (); Grid (); LimpiarGrid(); Cuadricula.SeleccionItemEvento += SeleccionItem; } void OnDisable () { Cuadricula.SeleccionItemEvento -= SeleccionItem; } void Grid () { BidItem = new Cuadricula [TamañoX, TamañoY]; for (int x = 0; x < TamañoX; x++) { for (int y = 0; y < TamañoY; y++) { BidItem [x,y] = Instanciar (x,y); } } } void LimpiarGrid() { for (int x = 0; x < TamañoX; x++) { for (int y = 0; y < TamañoY; y++) { Encuentros encuentros = ObtenerInfo (BidItem [x, y]); if (encuentros.EncuentroValido) { Destroy (BidItem [x, y].gameObject); BidItem[x,y] = Instanciar (x, y); y--; } } } } Cuadricula Instanciar (int x, int y) { GameObject ItemRandom = _items[Random.Range (0, _items.Length)]; GameObject NuevoItem = (GameObject) Instantiate (ItemRandom, new Vector3 (x, y, 0f), Quaternion.identity); NuevoItem.GetComponent<Cuadricula>().Posicion (x,y); return NuevoItem.GetComponent<Cuadricula> (); } void SeleccionItem (Cuadricula item) { if (ItemActual == item || !Jugando) { return; } if (ItemActual == null) { ItemActual = item; }else { float xDif = Mathf.Abs (item.x - ItemActual.x); float yDif = Mathf.Abs (item.y - ItemActual.y); if (xDif + yDif == 1) { StartCoroutine (Cambio (ItemActual, item)); //cambiar }else { Debug.Log ("Ese cambio no esta permitido"); } ItemActual = null; } } IEnumerator IntentoEncuentros ( Cuadricula a, Cuadricula b) { Jugando = false; yield return StartCoroutine (Cambio (a, b)); Encuentros EncuentroA = ObtenerInfo (a); Encuentros EncuentroB = ObtenerInfo (b); if(!EncuentroA.EncuentroValido && !EncuentroB.EncuentroValido) { yield return StartCoroutine (Cambio (a, b)); yield break; } if (EncuentroA.EncuentroValido) { yield return StartCoroutine (DestruirItems (EncuentroA.Encuentro)); yield return StartCoroutine (UpdateGrid (EncuentroA)); } else if (EncuentroB.EncuentroValido) { yield return StartCoroutine (DestruirItems (EncuentroB.Encuentro)); yield return StartCoroutine (UpdateGrid (EncuentroB)); } Jugando = true; } IEnumerator UpdateGrid (Encuentros encuentro) { if (encuentro.EncuentroStartY == encuentro.EncuentroEndY) { for ( int x = encuentro.EncuentroStartX; x <= encuentro.EncuentroEndX; x++){ for (int y = encuentro.EncuentroStartY; y < TamañoY - 1; y++){ Cuadricula upIndex = BidItem [x, y + 1]; Cuadricula current = BidItem [x, y]; BidItem [x, y] = upIndex; BidItem [x, y + 1] = current; BidItem [x, y].Posicion (BidItem [x, y].x, BidItem [x, y].y - 1); } BidItem [x, TamañoY-1] = Instanciar (x, TamañoY - 1); } } else if (encuentro.EncuentroEndX == encuentro.EncuentroStartX){ int EncuentroHeight = 1 +(encuentro.EncuentroEndY - encuentro.EncuentroStartY); for (int y = encuentro.EncuentroStartY + EncuentroHeight; y <= TamañoY - 1; y++){ Cuadricula lowIndex = BidItem [encuentro.EncuentroStartX, y - EncuentroHeight]; Cuadricula current = BidItem [encuentro.EncuentroStartX, y]; BidItem [encuentro.EncuentroStartX, y] = lowIndex; BidItem [encuentro.EncuentroStartX, y - EncuentroHeight] = current; } for (int y = 0; y < TamañoY - EncuentroHeight; y++) { BidItem [encuentro.EncuentroStartX, y].Posicion (encuentro.EncuentroStartX, y); } for (int i = 0; i < encuentro.Encuentro.Count; i++) { BidItem [encuentro.EncuentroStartX, (TamañoY-1) - i] = Instanciar (encuentro.EncuentroStartX, (TamañoY -1) -i) ; } } for (int x = 0; x < TamañoX; x++) { for (int y = 0; y < TamañoY; y++) { Encuentros encuentros = ObtenerInfo (BidItem [x, y]); if (encuentros.EncuentroValido) { yield return new WaitForSeconds (minItemsPorEncuentro); yield return StartCoroutine (DestruirItems (encuentros.Encuentro)); yield return new WaitForSeconds (minItemsPorEncuentro); yield return StartCoroutine (UpdateGrid (encuentros)); } } } } IEnumerator DestruirItems ( List <Cuadricula> items) { foreach (Cuadricula i in items) { yield return StartCoroutine (i.transform.Escala (Vector3.zero, 0.01f)); DestroyImmediate (i.gameObject); } } IEnumerator Cambio ( Cuadricula a, Cuadricula b) { CambioRigidbody (false); float DuracionMov = 0.1f; Vector3 PosicionItemA = a.transform.position; StartCoroutine (a.transform.Move (b.transform.position, DuracionMov)); StartCoroutine (b.transform.Move (PosicionItemA, DuracionMov)); yield return new WaitForSeconds (DuracionMov); CambioRigidbody (true); } void ActualizarValores ( Cuadricula a, Cuadricula b) { Cuadricula TemporalA = BidItem [a.x, a.y]; BidItem [a.x, a.y] = b; BidItem [b.x, b.y] = TemporalA; int ViejobX = b.x; int ViejobY = b.y; b.Posicion (a.x, a.y); a.Posicion(ViejobX, ViejobY); } List <Cuadricula> BuscarHorizontal ( Cuadricula item) { List <Cuadricula> HItems = new List <Cuadricula>{ item }; int Left = item.x -1; int Right = item.x +1; while (Left >= 0 && BidItem [Left, item.y].id == item.id) { HItems.Add (BidItem [Left,item.y]); Left--; } while (Right < TamañoX && BidItem [Right, item.y].id == item.id) { HItems.Add (BidItem [Right,item.y]); Right--; } return HItems; } List <Cuadricula> BuscarVertical ( Cuadricula item) { List <Cuadricula> VItems = new List <Cuadricula>{ item }; int Lower = item.y -1; int Upper = item.y +1; while (Lower >= 0 && BidItem [item.x, Lower].id == item.id) { VItems.Add (BidItem [item.x, Lower]); Lower--; } while (Upper < TamañoY && BidItem [item.x, Upper].id == item.id) { VItems.Add (BidItem [item.x, Upper]); Upper++; } return VItems; } Encuentros ObtenerInfo ( Cuadricula item) { Encuentros E = new Encuentros (); E.Encuentro = null; List <Cuadricula> HEncuentro = BuscarHorizontal (item); List <Cuadricula> VEncuentro = BuscarVertical (item); if (HEncuentro.Count >= minItemsPorEncuentro && HEncuentro.Count > VEncuentro.Count){ //informar de los encuentros E.EncuentroStartX = ObtenerMinimoX(HEncuentro); E.EncuentroEndX = ObtenerMinimoX (HEncuentro); E.EncuentroStartY = E.EncuentroEndY = HEncuentro[0].y; E.Encuentro = HEncuentro; } else if (VEncuentro.Count >= minItemsPorEncuentro){ E.EncuentroStartY = ObtenerMinimoX(VEncuentro); E.EncuentroEndY = ObtenerMaximoY(VEncuentro); E.EncuentroStartX = E.EncuentroEndY = HEncuentro[0].x; E.Encuentro = VEncuentro; } } int ObtenerMinimoX ( List <Cuadricula> items) { float [] indices = new float [ items.Count]; for (int i = 0; i < indices.Length; i++) { indices [i] = items [i].x; } return (int)Mathf.Min (indices); } int ObtenerMaximoX ( List <Cuadricula> items) { float [] indices = new float [ items.Count]; for (int i = 0; i < indices.Length; i++) { indices [i] = items [i].x; } return (int) Mathf.Max (indices); } int ObtenerMinimoY ( List <Cuadricula> items) { float [] indices = new float [ items.Count]; for (int i = 0; i < indices.Length; i++) { indices [i] = items [i].y; } return (int) Mathf.Min (indices); } int ObtenerMaximoY ( List <Cuadricula> items) { float [] indices = new float [ items.Count]; for (int i = 0; i < indices.Length; i++) { indices [i] = items [i].y; } return (int) Mathf.Max (indices); } void ObtenerItems() { _items = Resources.LoadAll <GameObject> ("Prefabs"); for ( int i = 0; i < _items.Length; i++) { _items[i].GetComponent <Cuadricula>().id = i; } } void CambioRigidbody ( bool Estado) { foreach (Cuadricula c in BidItem) { c.GetComponent<Rigidbody2D>().isKinematic =!Estado; } } }
  5. Buenas!! Alguno me puede explicar como y si es posible exportar un GameObject entero en forma de Modelo3D? Necesito exportarlo asi talcual: Es esto posible? Si es posible, una ves que tengo el modelo3D Como y con que programa podria lograr eliminar las caras(Meshes/Mallas) que no me interesan y para mejorar rendimiento Como por ejemplo esas caras con X azules, que se renderizan en ejecucion, pero que no son necesarias. Espero respuestas abrazo!
  6. Muy buenas, mi consulta es la siguiente (vengo echandole un ojo hace varias semanas a la serializacion de scripts y hasta ahora no me queda muy claro a la hora su concreta definicion) Serializar significa Guardar dicho de otro modo? Me encontre con este problema: ARRAY QUE NO SE GUARDA CUANDO EJECUTO EN RUN. Esto me funciona a la hora de darle play en Unity, pero cuando compilo mi juego en Run, parece no funcionar y no se me guarda estos elementos. Para que no se mareen simplemente esto es un script con un List<Track> me refiero a List<TipoClaseConMasVariablesYmasSubClases>(); SCRIPT QUE EN RUN NO FUNCIONA CORRECTAMENTE Cuestion: Estoy editando y dandole valores a esta lista desde el inspector, y parece ser que en RUN no me lo lee, en que estoy fallando? Lo que quiero lograr: La imagen anterior pertenece a otro objecto(LevelManager), esta imagen es de un objeto distinto(Pipe). Basicamente lo que quiero lograr es comparar 2 Array, el array Values de este script Pipe, con el un especifico componente de la Lista<Tracks> en donde arrastro mi objeto al especifico componente y ahi es donde le digo los valores a comparar el Array Value de Pipe y el Array Value Correspondiente de Track. No se si me explico bien. Soluciones: Alguna idea? Sospecho que va de la mano de serializar, pero la verdad no tengo idea, por ahi es otra cosa INTENTO EVITAR EL UNITYEDITOR, pero si tengo que usarlo lo uso. ABRAZO!
  7. Hola, Alguien que sepa un pocom asin ternamente sobre el lenguaje de programacion y me diga hablando en terminos re rendimiento, como funcionan varios for en un update que se actualiza por frame, son una serie de for yo diria comunes, nada fuera del margen normal de sobrecarga. O porlomenos y ocreo que no es sobrecarga, y si no lo es en que momento se podria decir que estamos sobrecargando mas datos de lo que puede procesar un script por frame? Estos son algunos for en un update public class Checker : MonoBehaviour { public List<Track> Tracks = new List<Track>(); private void Update() { foreach (var Track in Tracks) { foreach (var Pipe in Track.Pipes) { for (int i = ; i < Pipe.Values.Length; i++) { if (Pipe.Values[i] == Pipe.Pipe.GetComponent<Pipe>().values[i]) { Pipe.Joined = true; } else { Pipe.Joined = false; break; } } } for (int i = ; i < Track.Pipes.Count; i++) { if (Track.Pipes[i].Joined == false) { Track.TrackOn = false; return; } } Track.TrackOn = true; } } } De promedio tengo minimmo 5 pipes(tubos) por Track(via), un GetComponent malo ahi que se repite, nose como guardar antes ese determinado componente de ese determinado objeto, mas omenos itero mas de unas 100 o 250veces por frame, esto me parece una locura ami, pero no conosco el potencial de la programacion todabia soy un poco novato. Esto le duele mucho a los fps? Asi tal cual como ese codigo, y si no es mucha carga de info por frame, cuando se podria decir que uno se pasa de mambo conlos for en cada frame?
  8. Hola! espero que esten bien. Bueno, estube dandole vueltas y vueltas a los RayCast y todabia nose manejarlos bien, es decir, entiendo toda su mecanica a la perfeccion, pero en le codigo me hace cosas raras... y la verdad que me frustra bastante estos raycastsitos.... Bueno la cuestion es que necesito simplificar este despelote asqueroso, o nose si es asqueroso, por ahi es la unica forma de hacerlo, pero miren... public bool castHitForward; public bool castHitBack; public bool castHitLeft; public bool castHitRight; private void Update() { RaycastHit hitForward; RaycastHit hitBack; RaycastHit hitLeft; RaycastHit hitRight; castHitForward = Physics.Raycast(new Ray(transform.position, Vector3.forward), out hitForward, 0.2f); castHitBack = Physics.Raycast(new Ray(transform.position, Vector3.back), out hitBack, 0.2f); castHitRight = Physics.Raycast(new Ray(transform.position,Vector3.right), out hitRight,0.2f); castHitLeft = Physics.Raycast(new Ray(transform.position, Vector3.left), out hitLeft, 0.2f); if (castHitForward) Debug.Log(hitForward.collider.name); if (castHitBack) Debug.Log(hitBack.collider.name); if (castHitRight) Debug.Log(hitRight.collider.name); if (castHitLeft) Debug.Log(hitLeft.collider.name); } private void OnDrawGizmos(){ Gizmos.DrawRay(transform.position, Vector3.forward * 0.2f); Gizmos.DrawRay(transform.position, Vector3.back * 0.2f); Gizmos.DrawRay(transform.position, Vector3.right * 0.2f); Gizmos.DrawRay(transform.position, Vector3.left * 0.2f); } Bueno, todo eso hace esto simplemente... Bueno, en el centro pueden ver lo que estoy haciendo... En el ejemplo 1 muestro lo que hace mi codigo lo cual no es eficiente... En el ejemplo 2 muestro lo que quiero, simplemente dos raycast, o linecast nose como mierda funiconan... La cuestion es que ya intente hacer los dos, y como que solamente me toma por ejemplo si largo el cast de A hasta B me toma los hit con direccion de B hasta A Osea... si creo un Cast desde a hasta b A-----B me toma el hit asi... A-----B<-----HIT El Physic es TRUE ....Pero si intento esto HIT----->A-----B El Physic es FALSE No me lo toma..... Entiendo que un Ray(rayo) dispara de su direccion hasta la otra direccion entonces es razonable que solo tome el hit de B... peero tambien intente con LineCast y pasa lo mismo, en una linea no tiene sentido... Ahi ya mi logica se rompe y sobre pasa mis leyes naturales que conosco jajaja Tambien pense en un BoxCast pero no tengo ni puta idea como usarlo, y no me vengan con la API de unity que no especifica nada sobre eso :/ Entonces como genero un Cast que me lo tome en ambas direcciones? HIT----->A-----B<-----HIT TRUE Ambos(como en el ejemplo 2, donde usaria simplemente 2 hits)... como lo hago? es posible?, en el caso de no ser posible... como hago mas eficiente el codigo?.... Espero que hayan entendido mis ejemplos(sino pruebenlo ustedes mismos y me van a entender)... Saludos.
  9. Hola muchach@s! Bueno, resulta que estoy en pleno desarrollo y me encuentro con un problema no menor, y no se me ocurre nada para poder solucionarlo.......... Aca un video de mi problema Bueno como ven... Necesito empujar un objeto en tiemporeal (osea basicamente cuando esta ejecutandose), y no puedo, como que aveces lo transpasa, aveces no... :/ no conosco la causa de este problema.... No tiene nada que ver que mi cubo tenga scripts de movimiento, de echo tambien hice la prueba con un cubo limpio, donde meto un rigidbody y me pasa exactamente lo mismo... Alguna solucion ante esto?... Nose como definir el problema, pero necesito que dicho objeto (en este caso mi cubo) NUNCA sea traspasado por NADA.... hay alguna forma de elevar el nivel de proteccion de mi boxcollider? para que NUNCA sea transpasado? Tambien probe, desactivandole los freeze rotation a mi rigidbody, pero de igual manera sige transpasando
  10. Hola, buenas noches. Tengo mi first person controller que ya viene prefabricado en unity. y tengo mi proyecto en android. Con la novedad que no puedo mover mi personaje con el teclado y menos con joystick, entonces me di a la tarea de crear mi código para hacer esos movimientos, debido a que quiero que mi juego se pueda mover con un joystick bluetooth y no con touchpad. Tengo el siguiente código: public class MovilControl : MonoBehaviour { public float speed = 0.0f; // Use this for initialization void Start () { } // Update is called once per frame void Update () { float z = Input.GetAxis("Vertical"); z = z * Time.deltaTime * speed; transform.Translate(0f, 0f, z); if(Input.GetAxis("Horizontal")<0) { transform.Rotate(0, speed * Time.deltaTime - 1 , 0); } if (Input.GetAxis("Horizontal") > 0) { transform.Rotate(0, speed * Time.deltaTime + 1, 0); } } } que hace que mi personaje avance y retroceda. y mi duda es la siguiente: Cómo implemento código para que cuando mueva el stick a la derecha o izquierda gire hacia ese lado? y cómo le hago para que cuando presione el botón 0 del joystick haga el efecto de saltar? GRACIAS!
  11. Guest

    [AYUDA] unity android

    Hola , me gustaría que me ayudaran , pues yo no se mucho de unity en android y me gustaría que cuando pulsaras por un laado de a pantalla comenzara una animación o que cuando deslizaras el dedo por la pantalla se moviera la cámara a la vez ... no se si me entiende , si me pueden ayudar hos lo agradeceria muchísimo
  12. Guest

    Ayuda tópico

    Buenos días comunidad... he visto que solamente hay 3 tópicos aquí , uno para juegos serios , otro para presentarse y este ,estoy muy inseguro de en donde publicar mis futuras dudas sobre programación. ¿ lo debo hacer aquí ? ... Gracias.
  13. necesito ayuda para que esta script funcione esque se supone que te aparecen popups si funciona pero no aparecen podrian ayudarme a como hacer que aparesca un screamer cada 4 minutos miren es esto utiliza popups var timer : float = 0.0; var spawning : boolean = false; var spawnpoint : Transform; var spawn1 : Transform; var spawn2 : Transform; var spawn3 : Transform; var spawn4 : Transform; var spawn5 : Transform; var spawn6 : Transform; function Update () { //check if spawning at the moment, if not add to timer if(!spawning){ timer += Time.deltaTime; } //when timer reaches 2 seconds, call Spawn function if(timer >= 2){ Spawn(); } } function Spawn(){ //set spawning to true, to stop timer counting in the Update function spawning = true; //reset the timer to 0 so process can start over timer = 0; //select a random number, inside a maths function absolute command to ensure it is a whole number var randomPick : int = Mathf.Abs(Random.Range(1,7)); //create a location 'Transform' type variable to store one of 3 possible locations declared at top of script var location : Transform; //check what randomPick is, and select one of the 3 locations, based on that number if(randomPick == 1){ location = spawn1; yield WaitForSeconds(Random.Range(30,200)); Debug.Log("Chose pos 1"); } else if(randomPick == 2){ yield WaitForSeconds(Random.Range(30,200)); location = spawn2; Debug.Log("Chose pos 2"); } else if(randomPick == 3){ yield WaitForSeconds(Random.Range(30,200)); location = spawn3; Debug.Log("Chose pos 3"); } else if(randomPick == 4){ yield WaitForSeconds(Random.Range(30,200)); location = spawn4; Debug.Log("Chose pos 4"); } else if(randomPick == 5){ yield WaitForSeconds(Random.Range(30,200)); location = spawn5; Debug.Log("Chose pos 5"); } else if(randomPick == 6){ yield WaitForSeconds(Random.Range(30,200)); location = spawn6; Debug.Log("Chose pos 6"); } //create the object at point of the location variable var thingToMake : Transform = Network.Instantiate(location, spawnpoint.position, spawnpoint.rotation, 1); //halt script for 1 second before returning to the start of the process yield WaitForSeconds(1); //set spawning back to false so timer may start again spawning = false; }
  14. Saludos a todos. Estoy con un proyecto con la intención de sacarlo para Android e iOS, y necesito ayuda con el siguiente tema: Para hacer un selector de niveles actualizable, necesito que se instancie un "selector" por cada mundo o nivel del juego; y como el juego se irá actualizando, se vayan generando automáticamente más paneles de selección según se incrementan los mundos o niveles. En resumen, intentar hacer un script en C# con el que, al actualizar el juego, se muestre el mismo número de paneles que de mundos haya en cada momento. Dicho esto, cada mundo irá en una carpeta, y dentro de ella lo necesario para cada nivel. Por ende, necesito saber por scripting cuántas carpetas exiten dentro de la carpeta de resources, guardarlo como un int, y que se instancien tantos paneles como el int indique. ¿Alguna solución al problema? No se como buscarlo en internet, ya que es complicado de explicar. Muchas gracias de antemano.
  15. using UnityEngine; using System.Collections; public class Test1Variables : MonoBehaviour { public int Vida = 100; public int VidaMaxima = 100; public int Armadura = 0; public int ArmaduraExtra = 50; public bool ArmaduraExtraB = true; public int ArmaduraSegundo = 1; public int ArmaduraMaxima = 100; void Awake (){ if (ArmaduraExtraB == true) { Armadura = Armadura + ArmaduraExtra; } } void Update () { if (Armadura < ArmaduraMaxima && Vida == VidaMaxima) { Armadura = Armadura + ArmaduraSegundo; } Debug.Log ("Armadura: " + Armadura + ("/100")); } } Este post nomas lo hago para que me ayuden a aprender, el script que les pasare no es para ningun proyecto mio solo es lo que estoy haciendo para aprender. Me gustaria saver como le pongo tiempo real en segundos para que suva la armadura cada un segundo.
×
×
  • Create New...