Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

problemas con online

Iniciado por zopas tv, Noviembre 15, 2017, 07:53:29 PM

Tema anterior - Siguiente tema
Cita de: zopas tv date=1511351287una cosilla porfavor respondanmela:
   
   
      es que tendo 2 spawns el el juego y uno mira al lado opuesto que el otro (tipo rocket leage) pero el coche siempre va a moverse hacia delante y yo quiero que se mueva con respecto a donde mira.
   
   
      no se si me entienden pero si no es asi ayudarme porfavor
   


Por el problema creería que estás utilizando Rigidbody y no WheelCollider, para solucionar este problema deberias de aplicar la fuerza en el eje Z relativo a la rotación, para facilitar este calculo, en el Transform tenes una propiedad llamada forward que hace el trabajo de sacar la dirección en base a la rotación.
 
Para entender las direcciones no es muy complicado, tienes que estudiar si aun no lo sabes sobre vectores. Link - Estudio
 
para solucionar puntualmente el problema deberias compartir el código.


using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class movimiento : NetworkBehaviour {

public float VelocidadNormal = 15f;
public GameObject nitro;
// Use this for initialization
void Start () {
   
      
}

// Update is called once per frame
void Update () {
   if (!isLocalPlayer) {
      return;
         }
 
   float tecladoVertical = Input.GetAxisRaw ("Vertical");
   float posicionZ = transform.position.z + (tecladoVertical * VelocidadNormal * Time.deltaTime);
   transform.position = new Vector3 (transform.position.x, transform.position.y, posicionZ);
   float tecladoHorizontal = Input.GetAxisRaw ("Horizontal");
   float posicionX = transform.position.x + (tecladoHorizontal * VelocidadNormal * Time.deltaTime);
   transform.position = new Vector3 (posicionX, transform.position.y, transform.position.z);
   }

}

 
 

Fijate que estás aplicando al eje Z el axis vertical, por lo que está mal.
 
Por el código te recomiendo que aprendas a programar y a leer en la Documentación de Unity como funcionan las cosas, mira tutoriales en YT existe muchísima información.
 
Para resolver el problema
 

private Vector3 axis = Vector3.zero;
private void Update()
{
axis.x = Input.GetAxis("Horizontal");
axis.z = Input.GetAxis("Vertical");
axis = transform.TransformDirection(axis);
axis.Normalize();   
transform.Translate(axis * 10 * Time.deltaTime);
axis.x = axis.z = 0;
}

 
 

entonces ese es el codigo correcto?
 
 

Cita de: zopas tv date=1511447436entonces ese es el codigo correcto?
   
   
       
   


Desconozco la lógica del juego, pero realiza lo mismo que tu codigo, lo unico que de una manera mas optima.
 
PD: Lo escribí desde el foro, desconozco si existe un error -

Gracias.
 
Dos cosillas: el online esta hecho,y quiero probarlo con un amigo, pero no nos va entonces querria saber como hacer que funcione
 
y otra, El script de puntuacion que pues hace un tiempo sigue sin funcionar. Le quito el networking y el networkbehaviour??
 
Muchas gracias a todos los que me ayudais y queria deciros que gracias por soportarme

1º Tienes que crear toda la lógica del juego en un componente si quieres llamarlo GameServer -
 

public class GameServer : NetworkBehaviour
{
private ClientServer ClientA, ClientB;
private void Update()
    {
   if(ClientA.transform.position.z > 10)
      ClientA.AddScore(100);         
    }
public class ClientServer
    {
   public NetworkConnection Conn {get; private set;}
   public string Name {get; private set;}
   public int Score {get; private set;}
   public ClientServer(NetworkConnection conn, string name)
        {
      Conn = conn;
      Name = name;
        }
   public void AddScore(int value)
        {
      Score += value;
      Conn.Send(NetworkCommand.NetMsgID, new NetworkCommand {action = "setScore", data = Score.ToString() });
        }
    }
}
public class NetworkCommand : MessageBase
{
public const int NetMsgID = 1001;
public string action;
public string data;
}

 
Esto sería simplemente el código para un lógica extremadamente simple para el servidor, con esto ya puedes sacar tus propias conclusiones -
 
 
 
ESCRIBO EL CODIGO BIEN INDENTADO Y SE DESACOMODA TODO CUANDO SE POSTEA -

Noviembre 25, 2017, 06:21:48 PM #22 Ultima modificación: Noviembre 25, 2017, 06:28:51 PM por zopas tv
pero si yo trabajo con los scripts de unity para el multijugador hago eso tambien??

Noviembre 25, 2017, 09:54:00 PM #23 Ultima modificación: Noviembre 25, 2017, 10:03:39 PM por zopas tv
Vale ya se eso, y ahora otra cosilla, mi jugador tiene una cámara propia, como hago para que otra cámara no la remplace?? Es decir, que cuando aparezca un jugador online no remplace a la cámara de otro jugador

hola me responden a la pregunta??
 
 

Cita de: zopas tv date=1511643240Vale ya se eso, y ahora otra cosilla, mi jugador tiene una cámara propia, como hago para que otra cámara no la remplace?? Es decir, que cuando aparezca un jugador online no remplace a la cámara de otro jugador
   


desactivas la camara a menos q sea la del jugador local

Cita de: zopas tv date=1511791388hola me responden a la pregunta??
   
   
       
   


No tenemos la obligación de hacerlo, creo que te di a entender que no cumples con los requisitos mínimos para lograr un juego multijugador, no sabes programar, menos aún vas a lograr completar un sistema que lógicamente es muy complejo, no seas arrogante con las peticiones -
 
Te invito a que pases por mi blog donde explico un poco sobre UNET es sobre una versión vieja pero no a cambiado mucho -
 
http://unitydoc.blogspot.com.ar/2016/02/unet-networking-primeros-pasos.html
 
http://unitydoc.blogspot.com.ar/2016/02/unet-networking-sistema-de-salud.html
 
 

Cita de: francoe1 date=1511802308No tenemos la obligación de hacerlo, creo que te di a entender que no cumples con los requisitos mínimos para lograr un juego multijugador, no sabes programar, menos aún vas a lograr completar un sistema que lógicamente es muy complejo, no seas arrogante con las peticiones -
   
   
       
   
   
       
   


no, me entendiste mal. No queria deciroslo como obligacion, es que pensaba que no la sabrian responder por preguntar en otro post
 
 
 
"creo que te di a entender que no cumples con los requisitos mínimos para lograr un juego multijugador, no sabes programar, menos aún vas a lograr completar un sistema que lógicamente es muy complejo"
 
Por algo se empieza...  mi idea es un juego local, no online con servidores, eso si que es complejo, pero como dijiste creo que usted:  "mira tutoriales en YT existe muchísima información. " a si que creo que se lo que hacer con respecto a esa frase suya.
 
muchas gracias a todos
 
Cita de: Braltor date=1511797657desactivas la camara a menos q sea la del jugador local
   


es que se clonan los jugadores es decir, que se crean a partir de un prefab ...

Lo que @Braltor esta indicando es que desactives la cámara en los clientes no locales.
 
 
 

public class NetworkCamera : NetworkBehaviour
{
[SerializeField]
private Transform _cam = null;
public override void OnStartClient()
    {
   _cam.gameObject.SetActive(isLocalPlayer);
    }
}

 
Esto lo tienes que añadir al componente Player .
 
No debes crear múltiples Network Identity para un solo jugador -

Noviembre 28, 2017, 03:48:53 PM #29 Ultima modificación: Noviembre 28, 2017, 04:08:27 PM por zopas tv
Cita de: francoe1 date=1511810801Lo que @Braltor esta indicando es que desactives la cámara en los clientes no locales.
   
   
       
   
   

public class NetworkCamera : NetworkBehaviour
{
[SerializeField]
private Transform _cam = null;
public override void OnStartClient()
    {
   _cam.gameObject.SetActive(isLocalPlayer);
    }
}

   
      Esto lo tienes que añadir al componente Player .
   
   
      No debes crear múltiples Network Identity para un solo jugador -
   


muchas gracias, me podrias explicar que dice este codigo?? es decir, que que significa. Gracias 
 
Y otra cosa, que pongo el el transform, es que me pide que rellene el hueco (para colocar algo)

Etiquetas: