Jump to content
UnitySpain

Samusan

Registrados
  • Content Count

    32
  • Joined

  • Last visited

  • Days Won

    1

Samusan last won the day on February 22 2017

Samusan had the most liked content!

Community Reputation

16 Good

About Samusan

  • Rank
    Usuario

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. ¿Por que quieres meterla en Update? ¿Puedes pasar el script?
  2. Samusan

    Artículo 13

    El problema de ese artículo es que lo ha votado gente que no sabe lo que es un algoritmo ni una red neuronal. Filtrar el contenido de YouTube de forma manual es humanamente imposible, se suben 300 horas de contenido cada minuto y ni las Inteligencias Artificiales ni los algoritmos entienden de contextos. Una maquina no distingue una parodia o un meme del contenido original, simplemente lo asocia y da una probabilidad. Lo que hará Google será ajustar sus mecanismos para que el filtrado deje pasar menos vídeos de los que ya dejaba. La ley en sí es perfecta incluido el artículo 13, el problema es que a día de hoy es imposible de cumplir.
  3. En el log del editor de Unity se pinta un reporte con los assets que se incluyen en la aplicación cada vez que se compila el apk, te recomiendo que le eches un vistazo a este manual : https://docs.unity3d.com/Manual/ReducingFilesize.html
  4. Samusan

    Todo se arruino

    Ademas de tener proyectos de prueba aprovecho para recomendar siempre usar un control de versiones como Gitlab o Github que te permiten dar marcha atrás en caso de que todo se rompa en tu ordenador. Hay que perder tiempo en aprender como funcionan pero te ahorran disgustos y ayudan a prevenir microinfartos XD.
  5. Si adjuntas, aunque sea por MP los scripts, te hecho una mano con eso, que parece que muchas dudas se producen por que te falta conocimiento de base en programación. Todos empezamos así.
  6. No comprendo del todo la duda ¿Te refieres a que la variable "Health" en lugar de valer 3 al inicio vale 0? Si es así dado que estoy viendo que es pública es probable que esté asignada en el inspector con otro valor. Por cierto, una pregunta que no tiene nada que ver, veo que estas utilizando "SendMessage" para llamar al método "TakeDamage" de HPBar, concretamente esta es la línea : HPBar.SendMessage("TakeDamage", 1); Me extraña porque SendMessage es una instrucción que no se utiliza demasiado, no se como lo tienes montado pero lo mejor es llamar al método directamente "HPBar.TakeDamage(1);". Insisto en que no se como lo tienes montado, lo indico por si fuera de ayuda. Un saludo.
  7. El rendimiento depende del hardware, debes adaptarte a la plataforma en la que se va a publicar la aplicación. Mas resolución = mas memoria usada = peor rendimiento.
  8. InvokeRepeating solo se ejecuta una vez : Si haces esto : InvokeRepeating("CreateEnemy", 0f, Random.Range (1, 5));  Solo se va a ejecutar el Random una vez. (Si el resultado es 2 se va a crear un enemigo cada 2 segundos). InvokeRepeating solo te va a funcionar para ejecutar una función en un tiempo constante. Si quieres que el tiempo sea variable hay 2 formas de hacerlo : 1 .- Hacer un contador : using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyGeneratorController : MonoBehaviour { public GameObject enemyPrefab; public float minTime = 1; //Tiempo minimo en el que se va a generar un enemigo public float maxTime = 5; //Tiempo máximo en el que se va a generar un enemigo private float generatorTime; //Tiempo en el que se genera cada enemigo private float generatorTimer; //Contador, va a ir desde 0 hasta el valor de generatorTime // Start is called before the first frame update void Start() { spawnTime = Random.Range (minTime, maxTime); } private void Update () { //Si el valor del contador es mayor que el tiempo en el que se genera cada enemigo. if (spawnTimer >= spawnTime){ CreateEnemy(); spawnTimer = 0; //Reseteamos el contador spawnTime = Random.Range (minTime, maxTime); // Volvemos a coger un valor aleatorio. }else { spawnTimer += Time.deltaTime; //Time.deltaTime vale 1 cada segundo. } } void CreateEnemy() { Instantiate(enemyPrefab, transform.position, Quaternion.identity); } } 2.- Utilizar un corrutina : using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyGeneratorController : MonoBehaviour { public GameObject enemyPrefab; public float minTime = 1; public float maxTime = 5; void CreateEnemy() { Instantiate(enemyPrefab, transform.position, Quaternion.identity); } public void StartGenerator() { StartCoroutine (EnemyGenerator ()); } public IEnumerator EnemyGenerator () { while (true){ float generatorTime = Random.Range (minTime, maxTime); yield return new WaitForSeconds (generatorTime); createEnemy(); } } public void CancelGenerator (bool clean = false) { StopAllCoroutines(); if (clean) { Object[] allEnemies = GameObject.FindGameObjectsWithTag("Enemy"); foreach (GameObject enemy in allEnemies) { Destroy(enemy); } } } } No me ha dado tiempo a probar los 2 scripts así que puede ser que falle alguna mayúscula, si tengo tiempo luego los pruebo, pero es para que te hagas una idea. Te recomiendo que busques tutoriales en youtube sobre como hacer un contador ya que es algo que se utiliza muchísimo. Suerte :)
  9. Buenas, He probado el script en mi PC y funciona perfectamente (solo he quitado el while y la referencia a ParticleChan). Pueden estar pasando dos cosas : 1.- ParticleChan.IsAlive() siempre se cumple y nunca sale del bucle. 2.- Falta algo de la configuración del inspector. Comprueba que el Player sea un Trigger y que tenga un rigidbody, revisa que tenga el tag asignado, que ambos sprites tengan colisiones etc. Adjunto un pantallazo de como tengo yo el inspector : Player Enemy : El script "Enemy" es el código que has pasado. Cualquier duda nos comentas. Un saludo y ánimo :)
  10. Por hacer una aclaración y por si a alguien le sirve de algo, justo el campo de debajo "Order in layer" indica, dentro de la misma capa, si un objeto se va a posicionar delante o detrás de otro.
  11. Samusan

    Pequeña duda

    Por lo general como programador debes tener tus escenas con una carga gráfica mínima y en las que se reproduzcan las condiciones del juego, se ahorra tiempo y en una empresa, dinero. Luego al hacer el testing en un PC mas potente se comprueba que todo funciona correctamente, si no es así la culpa no tiene por que ser del programador (Ejemplo : El diseñador le ha dicho al programador que todos los muros miden 2 metros y en la escena final hay uno de 3 metros y no se puede sobrepasar). El diseñador de niveles tiene que tener claro en que lugar se va a posicionar cada objeto de la escena por lo que va a tener que esbozar la escena final con objetos básicos y sin texturizado. Si en tu equipo la escena final tiene tanta carga gráfica que no puedes probar con fluidez es necesario que utilices la escena que el diseñador montó en primera instancia. Si por el contrario el prototipo de la escena no la ha montado el diseñador de niveles (esto no es recomendable XD) entonces debes montarla tu, no hay otra. Espero que te sirva de ayuda y ánimo!!! :)
  12. Cambia GetCorrespondingObjectFromSource(this) por GetPrefabParent (this). https://docs.unity3d.com/ScriptReference/PrefabUtility.GetCorrespondingObjectFromSource.html https://docs.unity3d.com/ScriptReference/PrefabUtility.GetPrefabParent.html Espero que funcione, si tienes cualquier problema coméntalo. Saludos :)
  13. Tal y como lo comentas, la estructura que has usado es correctísima. Unity se basa en componentes así que hay veces que es mejor tener 7 scripts y que cada uno haga una cosa que tener un popurrí en una sola clase, esto hace que sea reutilizable. Si esos scripts que tienes en tus colliders los puedes usar en cualquier personaje (no solo en el jugador) entonces es perfecto.
×
×
  • Create New...