Jump to content

ecko

Registrados
  • Content Count

    86
  • Joined

  • Last visited

Everything posted by ecko

  1. Hola, te agradezco la respuesta, me gustaría recibir mas información acerca de este tema, no sé si las rutas serán tan costosas como comentas ya que una ruta en ejecución parece que es instantánea y si las rutas no son demasiado largar serán aún mas optimas y no sé si es mas costoso mandar mi posición del cliente al servidor y el servidor que actualice los clientes con esa posición (lo cual puede haber saltos de posición) o en mi caso que directamente el servidor haga la ruta y mande la actualización a todos. Yo uso un sistema de lobbyes el cual serán varios servidores y cada lobbye tendrá unos 10 jugadores max (mas npcs etc) quizas haga rutas entre 10 y 50 máximo, no sé si al hacer el mapeado del navmesh internamente guarda valores para agilizar dichos cálculos.
  2. Buenas a todos, quería aclarar el tema cliente servidor para ver que pros y contras tiene hacer los cálculos de las rutas de navmesh en el servidor o en el cliente. En mi caso estoy calculando las rutas en el servidor ya que de este modo pienso que es la forma mas segura de evitar futuros bugs (el cliente aumente su velocidad de movimiento, evite colisiones,etc) pero no sé si esto implica una sobrecarga en mi servidor... (esto sería un tema a aclarar si las rutas implican mucha sobrecarga :S) Pensé un día en cambiarlo al cliente dichos cálculos pero no me gustó la idea ya que esto implica que el networkidentity tenga la marca localplayerauthority lo cual jode todo mi sistema ya que ahora todo lo controlaría el cliente (movimiento, ataques,hechizos,etc) y aparte si el cliente mueve el personaje a un lugar del mapa con el sistema AI de navmeshagent y mientras esta andando hasta el punto final minimiza el juego, el personaje se queda parado hasta que vuelva a maximizar el juego... lo cual me decanté por dejarlo en el servidor dicho control. Agradecería mucho las opiniones de usuarios expertos en servidores clientes, muchas gracias.
  3. Hola James, gracias por la aportación :), se me ocurrió lo mismo que acabas de decir de hacer una corrutina y parece que funciona perfectamente de este modo, el script que mandastes está vacío jjejee y bueno la corrutina que hice fué simplemente esto: GetComponent<NavMeshObstacle>().enabled = false; yield return new WaitForSeconds(.1f); GetComponent<NavMeshAgent>().enabled = true; no sé si hay alguna otra forma mas eficiente como hacer una especie de yield hasta que detecte que se ha desactivado por completo :S
  4. Hice esto que comentas y funciona todo bien salvo un pequeño detalle, a la hora de desactivar el obstacle y activar el agente pega como un pequeño saltito y he comprobado que se debe a que a la hora de desactivar el obstacle no le da tiempo a quitar el agujero tallado y calcula la nueva ruta con este tallado. La prueba que hice para averiguarlo fué desactivar obstacle y luego activar agent en diferentes pasos y de este modo funciona perfecto pero si lo hago todo en una misma iteración me da el problema del salto.
  5. Buenas, gracias por las respuestas de antemano, Pioj he visto el tutorial pero según entiendo eso sólo funciona para obstaculos (no tienen navmeshagent) y mi caso es cuando 2 jugadores se cruzan o cuando un jugador se mueve por una ruta donde hay un jugador parado. Una forma que he visto por ahí sería en un triger de colisión desactivar el navmeshagent en uno de los dos jugadores y activar el navmeshobstacle y en el otro jugador mantener activado el navmeshagent y desactivado el navmeshobstacle y cuando salga de la colisión volver a activar el navmesh del otro jugador y desactivar el navmeshobstacle, pero creo que esto no es la mejor opción ya que tengo que controlar varios factores y me da que no va a funcionar muy bien... Por lo que he leido y comprobado no puedo tener los dos componentes activados ya que se detecta a si mismo y no para de moverse el objeto jugador de un lado a otro.
  6. He estado intrigando mas del tema y según unity es incompatible usar navmeshagent junto con navmeshobstacle lo cual sólo debo usar navmesagent, a parte de esto he probado a quitar mi componente de colisión (charactercontroller) y el rigibody y el resultado es el mismo, mi jugador que esta recorriendo una ruta empuja al jugador que esta en medio de su ruta :S, no sé como hacer que no empuje si se supone que esto lo controla rigibody y lo tengo quitado.
  7. Hola a tod@s, estoy usando navegación navmesh y la verdad me funciona todo bien salvo un detalle importante... resulta que si tengo varios jugadores navegando por el mapa y un jugadorA se interpone en el camino de otro jugadorB (JugadorB esta recorriendo una ruta) este comienza a empujar al jugadorA. Necesito que no empuje sino que lo esquive, entonces me pregunto debo de alguna manera anular el empuje al rigiboddy (si es así como? ya que mass no puede ser 0 :S)? o debo agregar un navmeshobstacle? (si es así que propiedades debo poner ya que lo he probado y me vuelve loco los personajes moviendolos solos y de un punto a otro punto como teletransportandolos :S) las propiedades que he usado para esto son : carve=T, Move Threshold = 0.1, Time to Stactonary=0, CarveOnlyStation=false
  8. Hola gente, quería comentar una duda acerca de la networkLobby, mi duda es si se puede hacer un sistema estilo moba el cual es un servidor al cual conectan todos los usuarios y este tenga una opción de buscar partida la cual se encargue de gestionar las nuevas partidas (5vs5), según veo como funciona sólo es posible crear una partida a la cual se unan todos los que esten listos pero no veo que se puedan gestionar multiples partidas, es decir si ya se ha creado una partida y hay usuarios conectados al servidor solicitando una nueva partida que el servidor cree otra partida además de la anterior y así simultaneamente,es esto posible? y hay algún tutorial ya que no encuentro nada hacerca de esto, gracias de antemano :).
  9. Buenas de nuevo, quería primero agradecer estos consejos y tomarte tu tiempo :), viendo lo que comentastes opté por cambiar el código tal que así: var camaraMapa : GameObject; var vGra : GraphicRaycaster; var m_EventSystem : EventSystem; function Start(){ var cameraMapa=GameObject.Find("CamaraMapa"); vGra=GameObject.Find("CanvasGeneral").GetComponent(GraphicRaycaster); var m_EventSystem = GameObject.Find("EventSystem").GetComponent(EventSystem); } function Update(){ if(Input.GetKey(KeyCode.Mouse1)){ var lista : List.< RaycastResult > = new List.<RaycastResult>(); var m_PointerEventData = new PointerEventData(m_EventSystem); m_PointerEventData.position = Input.mousePosition; vGra.Raycast(m_PointerEventData,lista); var vPicadoEnMapa=false; for (var result : RaycastResult in lista) { { if(result.gameObject.name=="mapa"){ vPicadoEnMapa=true; var ray2 =camaraMapa.GetComponent(Camera).ViewportPointToRay(result.worldPosition); //Aquí creo que esta el problema ya que no puedo usar hit.textureCoord como vi en algunos códigos if (Physics.Raycast(ray2, hit)){ vPosicion=hit.point; } } } if(!vPicado){ vPosicion=hit.point; } } } Con este código soy capaz de detectar cuando pico sobre el mapa pero luego intento pasar el raycast sobre este mapa que es un rawimagen con una imagen de tipo renderTexture la cual esta siendo reproducida por otra cámara (camaraMapa) para obtener la posición sobre la segunda cámara pero se ve que devuelve siempre una misma posición pique donde pique en el mapa
  10. Buenas a tod@s, tengo un par de dudas que no consigo dar con la tecla y bueno agradecería una ayudita :) una de ellas y mas simple es por que me pone sombras en un skinnedmeshrender, este skinnedmeshrender se ilumina con una luz externa (light directional) y tiene las propiedades castshadows y light probes desactivadas pero sin embargo siguen saliendo sombras. Por otro lado estoy tratando de realizar un movimiento mediante un minimapa el cual es una imagen de tipo Render Texture (imagen proyectada por una cámara) y esta imagen la asocio a una rawimage de la ui pero resulta que al hacer click sobre esta imagen el raycast no detecta la ui y en la propia ui tengo activada la opción Raycasttarget pero nada se ve que el rayo atraviesa la ui y me detecta lo de atrás, el código es el siguiente: if (Input.GetKey(KeyCode.Mouse1)){ var ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, hit,100)){ Debug.Log(hit.transform.gameObject.name + hit.transform.gameObject.layer); if (hit.collider.gameObject.layer == 16){ // este layer se lo he asignado a la rawimagen del minimapa (sólo tiene este layer la imagen esta) ray = camaraMapa.ViewportPointToRay(new Vector3(hit.textureCoord)); if (Physics.Raycast(ray, hit)){ vPosicion=hit.point; } } else{ vPosicion=hit.point; } }
  11. Resuelto, simplemente usando NavMesh.SamplePosition :)
  12. Buenas, te agradezco la info, pero creo que no me sirve ese método ya que se basa en ignorar los objetos y así mandar el destino sobre la capa interior del terreno, pero yo como uso el componente obstaculo que lo pongo a los árboles sobretodo ya que al talarlos dejan de ser obstaculos y de lo contrario si deben serlo, entonces he estado mirando algo y hice algo así: El cliente hace lo siguiente: El servidor recibe el vector vPosicion para mover el jugador con lo siguiente: Pero no sé porque la función FindClosestEdge no funciona bien.
  13. Hola a tod@s, quisiera saber si es posible obtener el destino mas cercano transitable de un navmes, es decir, tengo un mapa con árboles y muros y a estos árboles y muros le he asociado el componente navmeshobstacle con la opción carve activada lo cual crea un hueco no transitable en la navegación del navmesh, hasta quí todo esta genial ya que cuando pulso con el ratón un click le asigno al navmeshagent.destination la nueva posicion de destino y si hay obstaculos por medio de su destino los evita rodeandolos y tal, pero el problema esta cuando hago click sobre un obstaculo (ej un árbol) mi jugador ni siquiera se mueve ya que internamente detecta que es una zona no valida de navegación pero claro yo quiero que mi agente navegue hasta la posición navegable más próxima de este obstaculo. Hay alguna forma de saber la posición mas cercana al obstaculo para asignarle al navmeshagent.destination esa posición válida?
  14. Buenas, gracias por la info aunque no era eso lo que preguntaba jeje, pero bueno si que pienso que lo mejor es cambiar los materiales directamente en código en lugar de tener dos mapas creados
  15. Buenas, me gustaría saber cual es la forma correcta para hacer lo siguiente: Tengo una mapa con muchos objetos 3d y cada objeto tiene su material agregado pero tengo la posibilidad de ponerle otro material para que sea de otro aspecto (material normal y material invierno) lo cual pienso que necesito crearme 2 scenas iguales con la diferencia que un mapa tenga los objetos con el material normal y otro mapa con el material nieve, de tal modo que cargo una escena u otra dependiendo del modo elejido. Esto sería la forma correcta o hay alguna otra forma mejor? gracias.
  16. Buenas, para tu información javascript sigue en unity, si lo quitasen habría miles de quejas porque como tu y como yo somos millones de usuarios que preferimos java, sólo tienes que crear el fichero desde el propio visualstudio, vas a archivos,nuevo fichero y te saldrá javascript ;)
  17. Buenas!, pues sinceramente creo que la mejor opción es crear la animación por completo, es decir, la naimación del personaje y además añadirle un hueso extra (Arma) y este hueso extra animarlo en la misma animación del personaje y por último hacer un parent del arma sobre este hueso via script. A ver que opinais :)
  18. Hola chic@s tengo una duda a ver si pueden aclararme un poco, he visto que hay una opción de mecanim para humanoid la cual veo que agiliza mucho el tema de animaciones ya que parece ser que puedes meter animaciones ya creadas por unity u otros usuarios ahorrandote de este modo crear las animaciones, pero tengo una duda. Me pregunto si es posible animar un objeto externo junto con las animaciones del mecanim, os explico, tengo un personaje con mecanim y luego tengo un arma equipada la cual quiero animarla cuando el jugador esta realizando una animación de malabarismo por ejemplo y a la misma vez quiero animar el arma por ejemplo que la lance al aire y este arma de vueltas y luego caiga sobre su mano agarrandola de nuevo. Como debería hacerlo? imagino que debería de crear un hueso externo al del conjunto de huesos del personaje(Armature) pero se puede editar una animación de mekanim incluyendo este hueso externo?, gracias de antemano
  19. Buenas, busco diseñador 3D con altos conocimientos en animaciones ya que no dispongo de tanto tiempo para dedicarme al diseño y animación,al ser un nuevo proyecto tengo la necesidad de varios modelos como objetos de mapa(rocas,árboles,etc) , personajes, equipamiento,etc. Pago por trabajo terminado. Si alguien esta interesado que mande un mensaje privado, gracias.
  20. Hola chic@s ya lo he conseguido resolver, si a alguien le sucede lo mismo, simplemente es cambiar GetComponent(Animator) por GetComponent(NetworkAnimator) :)
  21. He probado lo que dices pero sigue sin funcionar
  22. Hola, alguien sabe a que se debe que un trigger de una animación no se ejecuta en modo online? Tengo el networkidentity y el networktransform en el objeto y luego desde el servidor ejecuto la animación con GetComponent(Animator).SetTrigger(GetComponent(Animator).StringToHash("Ataque")); pero se ejecuta en el servidor pero en los usuarios no, sin embargo si ejecuto una animación por variable, ejem : Jugador.GetComponent(Animator).SetFloat("Speed",1); esta si se ejecuta en servidor y clientes.
  23. Buenas, alguien sabe porque una RawImage con el componente EdgeCollider no funciona la funcion OnMouseEnter() (si tengo el radio a 0) y sin embargo si le pongo el componente BoxCollider2D si salta la funcion OnMouseEnter(), hay alguna forma de que reconozca el EdgeCollider con radio 0 ? ya que con radio se disloca un poco aunque así si funciona...
  24. Disculpa, lo tendré en cuenta la próxima pioj. Respecto al tema de las luces ya conseguí resolverlo cambiándole la propiedad Rendering Path en modo Legacy Vextex Lit a la cámara y con esto ya ha ganado mucha mas calidad de imagen y luminosidad.
  25. Resulta que en unity tengo una luminosidad totalmente distinta a como queda la ejecución en un .exe ya compilado, alguien sabe porque?
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...