Jump to content

All Activity

This stream auto-updates     

  1. Yesterday
  2. Creas una lista de todas las personas, esta puede ser estática y estar dentro del componente "ActorBehaviour" luego con una función de contacto basándonos en la distancia calcularía el nivel de contagio actual. Pseudo código public class ActorBehaviour : MonoBehaviour { public int InfectionAmount => m_infectionAmount; public bool IsInfected => m_infectionAmount > 95; [SerializeField] private LayerMask m_layerMask = 0; [SerializeField] private int m_radiusInfection = 3; [SerializeField] private bool m_usePhysicsMode = true; [SerializeField, Range (0, 100)] private int m_infectionAmount = 0; private void Start () { m_actors.Add (this); } private void OnDestroy () { m_actors.Remove (this); } private void Update () { foreach (ActorBehaviour actor in GetNearestActors ()) actor.Contact (this, Vector3.Distance (transform.position, actor.position)); } private void Contact (ActorBehaviour from, float distance) { m_infectionAmount += Mathf.RountToInt (from.InfectionAmount * (distance / m_radiusInfection)); m_infectionAmount = Mathf.Clamp (m_infectionAmount, 0, 100); } private IEnumerable<ActorBehaviour> GetNearestActors () { if (m_usePhysicsMode) { RaycastHit[] hits = Physics.SphereCastAll (new Ray (transform.position, Vector3.Up), m_radiusInfection, Mathf.Infinity, m_layerMask); foreach (RaycastHit hit in hits) { ActorBehaviour actor = hit.GetComponent<ActorBehaviour> (); if (actor is object) yield return actor; } } else { foreach (ActorBehaviour actor in GetActors ()) { if (Vector3.Distance (transform.position, actor.position) < m_radiusInfection) yield return actor; } } } #region Static Region private static List<ActorBehaviour> m_actors { get; set; } = new List<ActorBehaviour> (); public static IEnumerable<ActorBehaviour> GetActors () { for (int i = 0; i < m_actors.Count; i++) if (m_actors[i] is object) yield return m_actors[i]; } #endregion } Podes elegir si hacerlo mediante colisiones o recorriendo la lista comparando distancias, ambos métodos son un poco lentos, pero son los más fáciles de implementar. Lo mejor en este caso seria implementar QuadTree o similar. Saludos.
  3. Last week
  4. Disculpe las molestias, ya me presenté y publiqué mis problemas en las secciones correspondientes
  5. Muy buenas tardes a todos, primero que nada, soy muy novato en Unity, pero con muchas ganas de aprender, ahora estoy tratando de hacer un videojuego acerca de una pandemia(Covid-19) y me he quedado bloqueado varios días en una parte la cual es: Una persona infectada camina por una ruta, y al colisionar con otras personas dentro de un radio establecido pueda contagiarlas y estas personas contagiadas a su vez puedan transmitir la enfermedad igualmente(Activo un Sistemas de partículas cuando una persona se halla contagiado) y así mismo si existe una colisión con personas no contagiadas que no pase nada. He intentado poner en cada persona un SpheraCollider con un radio de 2 y esta a su vez que se active con un TriggerEnter cuando colisiona con otra persona, pero no se me ocurre como transmitir el contagio. Probé en hacer una Lista de tipo Persona con una variable boolean infected con su constructor. Mil disculpas por las molestias, ¿Alguien me puede dar alguna idea de que hacer? Muchas gracias.
  6. @jecfmaatrix Por favor preséntate en la sección correspondiente y podrás realizar las consulta en la categoría de scripting.
  7. si, yo creo que con "onTriggerEnter" o con "onCollisionEnter" esta bien
  8. Muchas gracias por responder, al principio estuve usando FindObjectsWithTag para detectar a las personas pero un amigo me supo comentar que no es muy recomendable usar eso ya que si hay mas de una persona en el radio de contagio, la enfermedad solamente se transmitiria a una sola persona, es decir a la persona que este mas cerca
  9. puedes usar tags.... y en la collision mirar que tag tiene el colisionado.... si un "noContagiado" se colisiona con un "contagiado" le cambias el tag a "contagiado" (al primero) o puedes hacerlo con layers...
  10. Muy buenas tardes a todos, primero que nada, soy muy novato en Unity, pero con muchas ganas de aprender, ahora estoy tratando de hacer un videojuego acerca de una pandemia(Covid-19) y me he quedado bloqueado varios días en una parte la cual es: Una persona infectada camina por una ruta, y al colisionar con otras personas dentro de un radio establecido pueda contagiarlas y estas personas contagiadas a su vez puedan transmitir la enfermedad igualmente(Activo un Sistemas de partículas cuando una persona se halla contagiado) y así mismo si existe una colisión con personas no contagiadas que no pase nada. He intentado poner en cada persona un SpheraCollider con un radio de 2 y esta a su vez que se active con un TriggerEnter cuando colisiona con otra persona, pero no se me ocurre como transmitir el contagio. Probé en hacer una Lista de tipo Persona con una variable boolean infected con su constructor. Mil disculpas por las molestias, ¿Alguien me puede dar alguna idea de que hacer? Muchas gracias.
  11. @Flauros Te recomiendo veas videos sobre programación en YouTube e intentes aprender a programar al menos lo básico, luego cuando prueba nuevamente crear cosas dentro de Unity3D, la comunidad intenta ayudarte pero estas cosas son muy sencillas y demuestran que no tienes el conocimiento básico. La comunidad es de "Desarrolladores" de videojuegos, no brindamos ayuda de programación básica, los próximos topics con estas características serán eliminados informando al usuario, si la acción se vuelve a repetir tendré que tomar medidas más drásticas.
  12. Y como quedaría el script? Esq soy bastante noob 😞
  13. igual seria mehor que quitases lo de jump = true.... y en vez de esos sumar a tu fuerza de impulso hacia atras una fuerza hacia arriba
  14. Puede que este haciendo el retroceso pero también pones jump a true y entonces puede influir entre las dos mecánicas
  15. el script parece correcto.... quizas la fuerzaSalto sea muy pequeña y no se note...
  16. Hola chicos estoy intentando q cuando mi personaje colisiones contra un enemigo retroceda. Pero con este código (el que está en verde) solo consigo que salte. ¿Por qué falla? Un saludo y gracias
  17. Te propongo 2 alternativas para poder encontrar una solución a tu problema. 1 - Haz un vídeo, guardalo en to Google drive y compartilo con permisos para ver. 2 - únete a nuestro servidor de discord para tener un contacto más directo.
  18. Que va.. si pongo el pivot donde va, me pasa lo mismo....
  19. Esta imagen es tu respuesta. El pivote está en el lugar incorrecto.
  20. Te recomiendo q preguntes en el foro ingles
  21. Flauros

    ¿Enviar juego?

    Todo funcionó correctamente. Muchas gracias por responder!
  22. Nadie sabe que podria estar pasando?? 😥
  23. Buenas Si lo que quieres es mandar el juego listo para jugar, tienes que hacer una build SI lo que quieres es pasar el proyecto para que lo edite, entonces si que tienes que mandarle los archivos
  24. Flauros

    ¿Enviar juego?

    Vale muchas gracias por responder. En principio es un juego 2D de plstaformas
  25. Igor

    ¿Enviar juego?

    si ha tenido algun juego en su PC supongo que ya tendra instalado DirectX11 (o igual el 10 u otro mas antiguo) ....son unas librerias (dll) de microsoft que se utilizan principalmente para juegos 3d.
  26. Si quieres y te ayudo. Si necesitas una conexión más directa podes usar nuestro servidor de Discord https://discord.gg/EdzpyCW
  1. Load more activity
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...