Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 58,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales

Search the Community

Showing results for tags 'network'.



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)

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. Buenas a todos. Me he lanzado a hacer un juego de proyecto fin de carrera y me he metido (creo que ha sido una mala idea dios...) a trastear un poco con el tema de multjugador. Me he atascado bastante y estoy bastante desesperado. Agradezco de antemano cualquier ayuda sobre el tema. Es posible que haya cosas que estén mal planteadas, he intentado hacerlo lo menos complicado posible. El proyecto trata de un juego de minigolf, que tiene por una parte modo solitario, y por otra multijugador. Lo único que quiero hacer es a nivel de LAN. Hasta ahora he conseguido esto. El problema ha venido cuando he empezado con el tema de delimitar la acción de los jugadores para que solo manejen su propia pelota. Adjunto una imagen de cómo tengo estructurado el prefab para el multijugador. Lo explico un poco por encima. Es la primera vez que hago un poco más grande de lo que suele ser hacerte una escena y cacharrear con ella. Dentro del gameobject ConjuntoMultijugador tengo otro gameobject vacío llamado jugador que tiene varias partes, la pelota que tiene un rigidbody, el pivoteAyudaVisual que sirve para mostrar una barra de potencia (también adjunto imagen), pivoteCamara sirve para manejar la cámara la cual se maneja de forma orbital con el ratón, RayCastUltimaPos lo utilizo para tener siempre debajo de la pelota un raycast y mediante tags ir guardando la posición de la pelota para que cuando se salga, vuelva a la ultima posición, y por en medio de algunos gameobjects he puesto algún script a modo de enlace para que se muevan a la vez que la pelota y de esa forma la barra de potencia siempre parta del la pelota etc. El otro gameobject que tengo al mismo nivel que jugador contiene cosas para el HUD. No se si estará bien planteado pero en un principio la idea es que cada uno tenga y vea su propio HUD. Lo que he visto hasta el momento del tema de networking un poco en resumen, es que cada prefab tiene que tener su propio network identity. Con la propiedad isLocalPlayer sacada del network identity puedo limitar las acciones de los jugadores para que cuando estén en LAN cada uno mueva su pelota. Aquí he presupuesto que con un network identity basta ya que luego desde cualquier objeto si lo llamas es suficiente para usar la propiedad isLocalPlayer. El problema que tengo desde hace ya un tiempo y que estoy muy desesperado es que no se sincronizan los jugadores, es decir, estando en la partida, si un jugador se mueve, el resto de jugadores no lo ve. Las pelotas del resto de juadores están en el escenario pero a ojos de otro jugador no se mueven. Estuve investigando y por lo que he visto, con el componente Network Transformer debería bastar. El problema es que no se muy bien donde ponerlo y me ha surgido otra duda. Si el network transform sirve para sincronizar pero el objeto está compuesto de varias partes y además una de ellas con rigidbody, tengo que usar un network transform en cada parte? Estuve haciendo pruebas y cuando asocio un network transform a un gameobject, automáticamente se crea un network identity sobre ese objeto y esto hace que me salte el warning de que hay demasiados network identity. Es un warning pero entiendo que si me sale es porque no se debe tener más de uno. Estoy ya desesperado y es horrible hacer pruebas en este punto porque cuando juego con los network transform, al intentar quitarlos muchas veces no sé por qué se me cierra Unity por un error sin explicación alguna. Ni me he molestado en rellenar el parte de errores porque en 3 ocasiones anteriores en errores similares sin explicación lo único que me han dicho es que no han podido reproducir el error. Sé que dentro del network transform hay una opción para especificar una sincronización según sea 2D, 3D, con rigidbody, etc. La pelota tiene rigidbody pero el Network Transform está en ConjuntoMultijugador. No sé muy bien hacia donde tirar. Es lo único que me falta para poder dar por cerrado esto y no sé muy bien cómo manejar esto ya. Muchas gracias de antemano por cualquier cosa que me pueda ayudar. Un saludo.
  2. Buenas a todos, antes de nada decir que estoy empezando en unity, mi problema es el siguiente, tengo un ascensor con un script muy básico con una función(void) que lo mueve y esta es llamada desde otro script, todo esto función bien, el problema viene cuando entran 2 personas al servidor (hecho con los recursos de unity) lo que pasa es que cuando el que crea el servidor pulsa para subir el ascensor todo funciona perfecto sin embargo cuando lo hace el otro jugador solo funciona en su ordenador, el movimiento del ascensor no se ve reflejado en los otros jugadores. ¿Porque puede ser? Gracias de antemano.
  3. Saludos... Estoy leyendo el manual de unity y voy por el network y siguiendo los pasos que ahí indican creo el proyecto y a la hora de probarlo inicio una construcción e inicio también en el proyecto y se conectan bn y todo como indican en el manual pero cuando paso el ejecutable a otra pc a la cual esta conectada con la principal viá lan y pruebo el juego no me conectan, y nunca se encuentran. no se porque ni que hacer, si me pueden decir le agradeceria...
  4. Hola a todos, tengo grandes problemas para entender el tema de Command, ClientRCP, etc... Esto esta puesto en el objeto cabeza. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class Aspecto : MonoBehaviour { public Material[] material; Renderer rend; // Use this for initialization void Start () { rend = GetComponent<Renderer>(); } // Update is called once per frame void Update () { if (Cabeza.aspecto == 0) { rend.sharedMaterial = material[0]; } else if (Cabeza.aspecto == 1) { rend.sharedMaterial = material[1]; } } } Y esto en el objeto Player por que si no el SyncVar me tira error: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; public class Cabeza : NetworkBehaviour { public static float aspecto = 0; [SyncVar] public float aspectocabeza = 0; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } public void AspectoCabeza() { if (aspecto == 0) { Cmd_AspectoCabeza2(); aspecto = 1; ; } else if (aspecto == 1) { Cmd_AspectoCabeza1(); aspecto = 0; } } [Command] private void Cmd_AspectoCabeza1() { if (!isServer) return; aspectocabeza = 0; } [Command] private void Cmd_AspectoCabeza2() { if (!isServer) return; aspectocabeza = 1; } } No se, no paro de darle vueltas al código ya no se ni lo que pongo, como no entiendo muy bien el tema de command y tal... Solo quiero que al pulsar un botón en plan... botón cabeza roja (textura de cabeza en versión rojo) cambie a ese material y también si al Player quiero cambiarle partes del cuerpo usando SetActive pueda cambiar la cabeza y que no solo lo vea yo, si no que se vea en todos los clientes. Un poco desesperado estoy... me lleva loco esto, ya tengo puesto al player, la vida, el disparo, enemigos, animaciones y tal y todo funciona ok en multiplayer, se ve bien, solo que ahora estos detalles... a ver si alguno pudiera echarme una mano, creo que es un tema interesante que podría ayudar a mucha gente no solo a mi, gracias de antemano!! P.D: No soy programador he aprendido a la fuerza de no parar de mirar tutoriales y de hacer cosas así que se me escapan muchas cosas de codigo pero mas o menos lo llego a entender bien aunque me cueste construirlo. Por ejemplo me volví loco pero sin ayuda puse que los navmeshagent siguieran a los players según distancia en el modo multijugador todo un logro para mi jajajajajaja.
  5. Lo que quiero hacer es en realidad muy simple, pero no encuentro la forma de hacerlo. Estoy desarrollando un juego multijugador pero cada jugador se encuentra en una escena distinta con scripts diferentes. El juego consiste en que un jugador juega sin nada de información, y el otro jugador ve la información en su pantalla. Por lo que ambos tienen que hablar, sin poder ver la pantalla del otro, para poder ganar. Es un juego de colaboración. Por lo tanto, necesito pasar valores del servidor al cliente, solo eso. Necesito enviarle una matriz de enteros al cliente. Que un script "s1" en la escena A del servidor llame a una función del script "s2" en la escena B del cliente, pasándole enteros. Nada complicado. Enviar ints de servidor a cliente es lo más básico. Conocía el antiguo sistema de network de unity (llamadas RPC), pero ahora que han cambiado al nuevo sistema "UNET" toda la información que encuentro en internet es sobre sincronizar transforms para poder tener distintos players en una misma escena, como si quisiera hacer un Counter Strike, yo no quiero hacer nada de eso. Así que, sabeis cómo enviar valores de servidor a cliente, que se encuentran en diferentes escenas con diferentes scripts? Otra cosa que no me queda clara son las nuevas componentes: network manager, network identity, network transfrm... Cuáles necesito para hacer esto y dónde? Gracias de antemano por la ayuda.
  6. Actualmente en Unity multiplayer, cuando cambias la escala de un player, este cambio no se actualiza automáticamente en el resto de clientes. ¿Alguien sabe cómo se puede hacer? Es para un juego tipo agar.io, donde el jugador va cambiando de tamaño.
  7. Cuando ya has dado tus primeros pasos en Multiplayer, te empiezas a dar cuenta de que la respuesta de los clientes durante una partida no es todo lo suave o fluída que debería ser. Esto es porque hace falta predecir el movimiento de los clientes del juego. Esta guía cubre todos los pasos para conseguirlo. http://gamasutra.com/blogs/ChristianArellano/20160329/269065/UNET_Unity_5_Networking_Entity_Interpolation_Part_1_of_6__Break_Into_Components.php?utm_source=dlvr.it&utm_medium=twitter
  8. Hola a todos! Hacía 3 años que no pasaba por aquí, dejé Unity de lado y, cuando volví a ponerme, no recordaba esta comunidad Las dudas que tenía las estuve preguntando en los foros de Unity oficiales, pero parece que mi consulta es muy n00b para que sea respondida. La verdad es que no me manejo mal con el inglés, tengo experiencia en programación alta (trabajé de desarrollador web 4 años) y llevo 3 meses en paro, tiempo dedicado a Unity. Aquí va la consulta: He leído que hay muchas maneras de realizar un multiplayer y, según lo que vaya a necesitar tu juego/aplicación, una de las tecnologías será mejor que otra, o más enfocada a tu proyecto. Os traduzco la consulta y os la dejo por aquí, a ver si me pudieseis recomendar. Mil gracias! "He estado buscando documentación sobre el desarrollo de un juego multiplayer en Unity, pero me he dado cuanta de que hay varias tecnologías además del Networking nativo de Unity.:He leído sobre: Photon using Photon's serversPhoton using your own server.Unity networkingUnity Cache ServerTu propio servidor de DBMi juego tendrá: Player DataBase (De esto, controlo los lenguajes SQL, MYSQL y PHP)Una Escena con todos los jugadores conectados (como un mmorpg open world)Pequeñas habitaciones (otras escenas) donde los jugadores podrán entrarMis lenguages de programación son los nativos de Unity (C# y Javascript) y otros como C++, PHP; SQL, MYSQL, y varias librerías derivadas de estos lenguages. Mi ingés no es muy bueno y toda la documentación está en este idioma, pero no está explicado en un inglés para tontos.Podríais recomendarme qué tecnología de networking sería la óptima para realizar este tipo de juego?Gracias! "
  9. Hola tengo un problema que no puedo solucionar, mi proyecto es un shooter TPS/FPS multijugador, puedo conectar a los jugadores y sincronizar movimiento y animaciones pero cuando creo las armas vienen los problemas. cuando inicio una partida todo bien crea a mi jugador y las armas en red. todo perfecto. al conectar un cliente a la partida en el servidor también parece todo bien las armas se generan y se equipan al cliente. pero del lado del cliente los jugadores que ya estaban allí aparecen pero las armas se quedan flotando y no se asignan al jugador. mi primer script se encarga de instanciar las armas y asignarlas cuando se crea el jugador. using UnityEngine; using System.Collections; using UnityEngine.Networking; public class NetPlayerSetup : NetworkBehaviour { [SyncVar] public string playerNetID; [SerializeField] cameraViewMove playerCam; public GameObject primaryWeapon; public GameObject secundaryWeapon; //weaponManager wManager; ShooterController shooterController { get { return GetComponent<ShooterController>(); } } playerController pController { get { return GetComponent<playerController>(); } } ikController ikControl { get { return GetComponent<ikController>(); } } //aimingController aimControl; Animator anim; // Use this for initialization void Start () { if (isServer) { playerNetID = "Player" + Random.Range(1, 1000); } if (isLocalPlayer) { pController.enabled = true; ikControl.enabled = true; //aimControl.enabled = true; playerCam = GameObject.FindGameObjectWithTag ("PlayerCam").GetComponent<cameraViewMove> (); playerCam.setupPlayer(gameObject); shooterController.enabled = true; CmdInstantiateWeapons(); } else { NetworkIkSync netIk = GetComponent<NetworkIkSync>(); netIk.enabled = true; } Debug.Log("Net Player Inicializado"); //finish } [Command] public void CmdInstantiateWeapons(){ //GameObject primary = GameObject.Instantiate (primaryWeapon) as GameObject; //GameObject secundary = GameObject.Instantiate (secundaryWeapon) as GameObject; GameObject primary = Instantiate(primaryWeapon, primaryWeapon.transform.position, primaryWeapon.transform.rotation) as GameObject; GameObject secundary = Instantiate(secundaryWeapon, secundaryWeapon.transform.position, secundaryWeapon.transform.rotation) as GameObject; NetworkServer.Spawn(primary); NetworkServer.Spawn(secundary); RpcEquipWeapons(primary, secundary); } [ClientRpc] public void RpcEquipWeapons(GameObject prymary, GameObject secundary){ shooterController.primaryWeapon = prymary; shooterController.secundaryWeapon = secundary; shooterController.unEquip(); shooterController.equip(weaponGlobals.weaponSlot.primary); } public void playerDead(){ pController.enabled = false; GetComponent<CharacterController>().enabled=false; shooterController.enabled=false; ikControl.enabled = false; //aimControl.enabled = false; anim.enabled = false; } void Update() { if (Input.GetKeyDown(KeyCode.I)) { if (isLocalPlayer) { interfaz.playerInfoText = playerNetID +" - "+ shooterController.primaryWeapon.GetComponent<arma>().armaNetID; interfaz.instance.updatePlayerInfo(); } CmdMessageLog(playerNetID + "- prymary: " + shooterController.primaryWeapon.GetComponent<arma>().armaNetID); } } [Command] public void CmdMessageLog(string s) { Debug.Log(s); } }y el escript donde se equipan las armas es el siguiente donde los parametros de primaryWeapon, secundaryWeapon y activeWeapon se quedan en null (solo el los jugadores que ya existian antes de entrar a la partida) using UnityEngine; using System.Collections; using UnityEngine.Networking; public class ShooterController : NetworkBehaviour { public GameObject bullet; public Transform target; public float smoothRotPlayer = 5f; public LayerMask aimMask; public Transform pointing; // apuntador public Transform pointingPivot; //eje o anclaje del apuntador/pointing (Shoulder/hombro) public Animator pointingAnimator; public GameObject primaryWeapon; public GameObject secundaryWeapon; public Transform primarySlot; public Transform secundarySlot; public weaponGlobals.weaponSlot currentSlot; public GameObject activeWeapon; public Transform leftHand; public Transform rightHand; [HideInInspector] public GameObject closerItem; public cameraViewMove playerCamera; public Animator playerAnimator { get { return GetComponent<Animator>(); } } arma miArma; Quaternion rotacion;//apuntar a target Quaternion desvio;// Quaternion rotPlayer; public bool useDinamicIk; float ikValue = 1f;//valor dinamico para el ik CharacterController charControl; public bool startReady = false; public bool startClientReady = false; // Use this for initialization public override void OnStartClient() { playerCamera = GameObject.FindWithTag("PlayerCam").GetComponent<cameraViewMove>(); //pooling PoolManager.instance.createPool(bullet, 10); //set charControl = GetComponent<CharacterController>(); pointingAnimator = pointing.gameObject.GetComponent<Animator>(); target = GameObject.FindGameObjectWithTag("LookPos").GetComponent<Transform>();// look pos mismo de las ik Debug.Log("ShooterController - starter"); startClientReady = true; } /* public override void OnStartClient() { Debug.Log("ShooterController - starter client"); } //*/ // Update is called once per frame [ClientCallback] void Update () { //Debug.Log(rotacion.eulerAngles); Debug.DrawRay(pointing.position, pointing.forward * 10, Color.cyan); Debug.DrawRay(pointing.position, (target.position - pointing.position).normalized, Color.blue); if (!isLocalPlayer) return; if (miArma = activeWeapon.GetComponent<arma>()){ interfaz.balasText = miArma.currentAmmo + " / " + miArma.ammo; } TakeCloserItemEvent(); equipPrimaryEvent(); equipSecundaryEvent(); isAimingEvent(); aimingEvent(); isShootingEvent(); isReloadEvent(); useIkEvent(); } #region events public void TakeCloserItemEvent(){ if(closerItem){ Vector3 currentHeading = closerItem.transform.position - transform.position; float currentDistance = currentHeading.magnitude; if(currentDistance < 0.5f){ arma wp = closerItem.GetComponent<arma>(); interfaz.itemName = "[E] to use "+wp.nombre.ToString(); if(Input.GetKeyDown("e")){ if(wp.slotUsed == weaponGlobals.weaponSlot.primary){ primaryWeapon.GetComponent<arma>().isItem(); primaryWeapon.transform.parent = null; primaryWeapon = closerItem; }else{ secundaryWeapon.GetComponent<arma>().isItem(); secundaryWeapon.transform.parent = null; secundaryWeapon = closerItem; } //unEquip(); activeWeapon = closerItem; //equipActive(); closerItem = null; interfaz.itemName = ""; } }else{ interfaz.itemName = ""; } } } public void equipPrimaryEvent(){ if(Input.GetKeyDown("1")){ unEquip(); equip(weaponGlobals.weaponSlot.primary); CmdEquipOnNetwork(weaponGlobals.weaponSlot.primary); } } public void equipSecundaryEvent(){ if(Input.GetKeyDown("2")){ unEquip(); equip(weaponGlobals.weaponSlot.secundary); CmdEquipOnNetwork(weaponGlobals.weaponSlot.secundary); } } public void isAimingEvent(){ //direccion y ajusde de apuntado con movimiento suavisado if(Input.GetAxis("Fire2")>0.5f){ playerAnimator.SetBool("focus", true); //Cursor.lockState = CursorLockMode.Locked; }else{ playerAnimator.SetBool("focus", false); //Cursor.lockState = CursorLockMode.None; } } public void aimingEvent(){ pointing.rotation = Quaternion.Slerp(pointing.transform.rotation, rotacion, miArma.movement * Time.deltaTime); //pointing.transform.position = Vector3.Lerp(pointing.transform.position, pointingPivot.position, miArma.movement); pointing.position = pointingPivot.position; Camera.main.transform.localRotation = Quaternion.Lerp(Camera.main.transform.localRotation, Quaternion.Euler(0,0,0), miArma.movement *Time.deltaTime); // rotacion de arma y objeto al apuntar o en si isFps de cameraViewMove es true if((playerAnimator.GetBool("focus") || playerCamera.isFps) && !playerAnimator.GetBool("running")){ Debug.Log("is aiming"); Ray ray = new Ray(pointing.transform.position, target.position - pointing.transform.position); RaycastHit hit; if(Physics.Raycast(ray, out hit, 0.5f, aimMask)){ rotacion = transform.localRotation * Quaternion.Euler(45,-30,0); }else{ rotacion = Quaternion.LookRotation(target.position - pointing.transform.position); } Quaternion rot = Quaternion.LookRotation(target.position - pointing.transform.position); rotPlayer = Quaternion.Euler(0,rot.eulerAngles.y,0); transform.rotation = Quaternion.Slerp(transform.rotation, rotPlayer, smoothRotPlayer * Time.deltaTime); }else{ rotacion = transform.localRotation * Quaternion.Euler(45,-45,0); } } public void isShootingEvent(){ if(miArma.fireType == weaponGlobals.fireType.full){ if(Input.GetButton("Fire1")){//boton de disparo es presionado shootingHip(); } }else{ if(Input.GetButtonDown("Fire1")){ shootingHip(); } } } public void isReloadEvent(){ if(Input.GetButtonDown("Reload")){ miArma.reload(); } if(Input.GetKeyDown(KeyCode.F)){ miArma.ammo = miArma.maxAmmo; } } public void useIkEvent(){ //usar iks cuando apunta if(playerAnimator.GetBool("focus")){ //* ikValue += 3f * Time.deltaTime; if(ikValue>1f){ ikValue = 1f; } //*/ }else if(!playerAnimator.GetBool("focus")){ //* ikValue -= 2f * Time.deltaTime; if(ikValue < 0f){ ikValue = 0f; }//*/ } if(useDinamicIk){ GetComponent<ikController>().ikWeight = ikValue; } } #endregion #region equip public void equip(weaponGlobals.weaponSlot WeaponSlot){ currentSlot = WeaponSlot; switch (currentSlot) { case weaponGlobals.weaponSlot.primary: activeWeapon = primaryWeapon; break; case weaponGlobals.weaponSlot.secundary: activeWeapon = secundaryWeapon; break; } miArma = activeWeapon.GetComponent<arma>(); activeWeapon.transform.parent = rightHand;//emparentamos a la mano miArma.equip();//equipamos arma (ajustamos posicion y rotacion) => !!importante despues de emparentar con mano pointingAnimator.SetInteger("weaponIndex", miArma.animIndex); pointing.transform.localRotation = Quaternion.Euler(90,0,0); playerCamera.aimZoomPos = miArma.aimZoomPos; //Debug.Log("weaponManager - active Weapon equipado"); } public void unEquip(){ primaryWeapon.transform.parent = primarySlot; primaryWeapon.transform.localPosition = Vector3.zero; primaryWeapon.transform.localRotation = Quaternion.Euler(Vector3.zero); secundaryWeapon.transform.parent = secundarySlot; secundaryWeapon.transform.localPosition = Vector3.zero; secundaryWeapon.transform.localRotation = Quaternion.Euler(Vector3.zero); primaryWeapon.GetComponent<arma>().isNotItem(); secundaryWeapon.GetComponent<arma>().isNotItem(); } [Command] public void CmdEquipOnNetwork(weaponGlobals.weaponSlot weaponSlot) { RpcEquipOnAllClients(weaponSlot); } [ClientRpc] public void RpcEquipOnAllClients(weaponGlobals.weaponSlot weaponSlot) { //in localPlayer is already equiped. Not need equip again if (!isLocalPlayer) { unEquip(); equip(weaponSlot); } } #endregion #region shooting public void shootingHip(){ if(shoot()){// el arma disparo? float vHip = Random.Range(0f,miArma.angleHip); float hHip = Random.Range(-miArma.angleHip, miArma.angleHip); float bhip = Random.Range(miArma.backHip/2, miArma.backHip); desvio = Quaternion.Euler(pointing.transform.eulerAngles + new Vector3(-vHip/2, hHip/2, 0)); pointing.transform.rotation = desvio; pointing.transform.position += pointing.transform.forward * -bhip; Camera.main.transform.Rotate(-vHip*miArma.camaraHip, hHip*miArma.camaraHip, 0); } } private bool shoot(){ if(miArma.tiempo <= Time.time && miArma.currentAmmo>0){ //RaycastHit hit; float randomAngle1 = Random.Range(-miArma.desvioBala/2, miArma.desvioBala/2); //rotate x angle float randomAngle2 = Random.Range(0 , 360); //rotate z angele //Ray ray = new Ray(miarma.barrel.position, miarma.barrel.eulerAngles + new Vector3(random1, 0, random2)); // if (Physics.Raycast(ray , out hit, 100f, mascara)){ // Quaternion angulo = Quaternion.FromToRotation(Vector3.zero, hit.normal); // GameObject go = Instantiate(miarma.impact, hit.point, angulo) as GameObject; // Destroy(go, 1f); // // } GameObject particle = Instantiate(miArma.particulaShot, miArma.barrel.position, miArma.barrel.rotation) as GameObject; Destroy(particle, 1); GameObject poolBullet = PoolManager.instance.reuseObject(bullet, miArma.barrel.position, miArma.barrel.rotation); poolBullet.GetComponent<bala>().setHitCallback(playerHitCallback); poolBullet.GetComponent<bala>().damage = miArma.bulletDamage; poolBullet.transform.Rotate(0,0,randomAngle2);//first rotate z angle to change the up douwn perspective poolBullet.transform.Rotate(randomAngle1,0,0);//alter x angle to view more up down to itself perspective poolBullet.GetComponent<Rigidbody>().velocity = poolBullet.transform.forward*miArma.bulletVelocity; //CmdShoot(miarma.barrel.position, miarma.barrel.eulerAngles, miarma.desvioBala, miarma.bulletVelocity, miarma.bulletDamage); miArma.sonido.PlayOneShot(miArma.shotSound); //if(anim){ // anim.SetTrigger("shoot"); //} miArma.tiempo = Time.time + miArma.fireRate; miArma.currentAmmo --; interfaz.balasText = miArma.currentAmmo + " / " + miArma.ammo; //instanciar cartuchos de balas disparadas switch(miArma.fireType){ case weaponGlobals.fireType.bolt: //generer casquillo despues del bolt break; case weaponGlobals.fireType.pump_action: //generar casquillo despues del pump break; case weaponGlobals.fireType.revolver: //generar casquillos cuando regarga break; default: miArma.genCas(); break; } return true; }else{ return false; } } void playerHitCallback(GameObject target, float damage, bool isHeadshot){ CmdMakeDamage(this.gameObject, target, damage, isHeadshot); } [Command] private void CmdMakeDamage(GameObject player, GameObject target, float damage, bool isHeadshot){ target.GetComponent<vitality>().CmdDamageIt(player, damage, isHeadshot); } #endregion } alguna idea o hay alguna función que se ejecute en los jugadores que ya estaban conectados?.
  10. Ayer yo y mi amigo,e el que esta haciendo el porjecto conmigo nos logramos conectar en red por unity por un script que descarge de la wiki, pero aunque llevo mucho timepo programando nunca me meti de alleno a el trabajo en network, quisiera saber como se puede hacer que aunque sea una persona vea lo mismo que la otra, o algo asi, aunque sea una idea para saber poder programarlo Gracias
  11. No se por que, pero no me spawnea el gamePlayerPrefab seteado en el NetworkLobbyManager.
  12. Hola estimados. Estoy desarrollando una sala, a donde se conectan muchos clientes (jugadores), lo que yo estoy queriendo realizar es que en la sala muestre los nombres de cada jugador y el estado (listo/no listo). Luego de una larga batalla contra unity lo que pude hacer es lo siguiente, al conectarse, el host (que también es jugador/cliente) puede ver los nombres de cada cliente. Cada cliente puede ver su nombre y el nombre del host en la lista, pero no puede ver los nombres de los demás jugadores (Aunque ve el lobbyPlayerPrefab creado, que seria un Panel blanco que contiene el nombre y el estado), se ve el Panel blanco, pero el Text se ve vacío, no tiene contenido. Sin embargo como comentaba más arriba puedo ver el nombre del host, y mi propio nombre. ¿Alguien podría ayudarme con este inconveniente o guiarme en el camino para poder solucionarlo? Cabe aclarar que he leído el Manual de Unity sin embargo, no logro encontrar mi falla. Si necesitan el código, estoy dispuesto a mostrarlo. ¿Podrían mostrarme en código que debo hacer en el script de mi playerLobbyPrefab y/o mi NetworkLobbyManager? Ante nada muchas gracias. Saludos
  13. Buenas a tod@s. Tengo un juego que ejecuto en 2 PCs que están en redes distintas. En el PC que quiero que actúe como servidor ejecuto: private void OnConnectedToServer() { connected = true; } private void OnServerInitialized() { connected = true; } private void OnDisconnectedFromServer() { connected = false; } private void OnGUI() { if (!connected) { if (GUILayout.Button("Crear server")) Network.InitializeServer(4, 8632 /*este es el numero de puerto que pongo*/, !Network.HavePublicAddress()); } else { GUILayout.Label ("Connections: " + Network.connections.Length.ToString()); } }Y en el PC que quiero que actúe como cliente (recalco, está en otra red distinta fuera de mi casa), ejecuto esto: private void OnGUI() { if (!connected) { if (GUILayout.Button("Conectar")) Network.Connect(70.80.90.100, 8632); //70.80.90.100 es una IP ficticia //En mi código tengo puesta la IP pública del primer PC mencionado anteriormente } } Pues bien, ejecuto el juego en el PC servidor, doy a Crear server y perfecto, parece que lo crea y me sale el mensaje de que hay 0 conexiones. Y cuando en el PC cliente (me conecto mediante Team Viewer) doy click a Conectar, se queda un rato pensandoselo y al momento me sale este error en la consola: The connection request to 70.80.90.100:8632 failed. Are you sure the server can be connected to?He probado a entrar en la configuración del router al que está conectado el PC servidor, y he redireccionado el puerto 8632 a la IP local de este PC, pero el resultado ha sido el mismo, en ningún momento me puedo conectar de un PC a otro. He probado a hacerlo dentro de la misma red, con la ip 127.0.01 y en este caso me va bien, pero claro, yo quiero pdoer conectarme con un PC fuera de mi red, así que esto no me vale... Espero haberme explicado de manera clara y correcta y que alguien pueda echarme una mano. Gracias a tod@s.
  14. Hola, estoy haciendo un juego de Boxeo Multijugador (Unity 5.1, UNET). Ambos personajes, usan el mismo script. Cuando uno muere, hace la animacion de muerte y el problema lo tengo cuando le tiene que avisar al servidor que se murio, y que por lo tanto el otro deberia festejar. Me esta costando entender como funciona el ClientCallback, Client y ClientRpc. Tengo dos script iguales, y uno de los dos en un momento determinado llama a un ClientCallBack. La pregunta es: En ambos personajes que tengo el script va al clientcallback simultaneamente (cuando uno de los dos va a ese clientcallback), o solo va el que lo llama... pasa que actualmente, el que llama a el clientcallback ejecuta todo bien, y hace varias algunas syncvar a travez de un command, pero el otro personaje ni se entera que las variables cambiaron. Es como que no estan syncronizando variables. El que ejecuta el clientcallback se entera del cambio de las syncvar y el otro no se entera. No se como hacer para que ambos se den cuenta.
  15. Buenas, tengo un ipad que hace de servidor al cual los demás se conectan a él. Estoy usando UNET la nueva forma de netowrking de unity 5. Me gustaría mandar desde el ipad servidor un mensaje Broadcast a todas las direcciones para anunciar la ip que tiene y los clientes puedan conectarse automáticamente. Alguien sabe si trae algo así ya el networking de Unity 5?? Gracias
×
×
  • Create New...