[TUTORIAL] Smooth Movement Unity (UNET)
3 participantes
Página 1 de 1
[TUTORIAL] Smooth Movement Unity (UNET)
Olá, boa noite.
Já tive várias dúvidas sobre o movimento sincronizado da Unity. Porém, nada havia resolvido um problema: A unity chama no máximo 29 vezes o Transform Sync, o que deixa o jogo praticamente chato, pois é ruim ver umas travadas. Por isto, venho à fazer um tutorial para um Smooth Movement na Unity:
OBS.: Não testei por outros. Pelo que sei, só funciona na HLAPI.
DOWNLOAD .CS:
Script ~ https://cdn.discordapp.com/attachments/419872942105559046/421440250775076874/Sync.cs
SCRIPT:
COMO USAR:
Coloque este script dentro de um objeto que você queira sincronizar, e pronto, o Script em si já faz a magia.
REFERÊNCIAS:
https://docs.unity3d.com/Manual/UNetUsingHLAPI.html
https://docs.unity3d.com/Manual/net-RPCDetails.html
https://docs.unity3d.com/Manual/UNetActions.html
https://docs.unity3d.com/ScriptReference/Networking.ClientRpcAttribute.html
https://docs.unity3d.com/ScriptReference/Networking.CommandAttribute.html
https://docs.unity3d.com/Manual/UNetActions.html
https://answers.unity.com/questions/1140982/how-to-properly-use-clientrpc-and-command.html
https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html
https://docs.unity3d.com/Manual/UNetStateSync.html
MAIS RECOMENDADO:
https://unity3d.com/pt/learn/tutorials/topics/multiplayer-networking/identifying-local-player
https://docs.unity3d.com/Manual/UNet.html
https://docs.unity3d.com/Manual/UNetStateSync.html
https://unity3d.com/pt/learn/tutorials/topics/multiplayer-networking/introduction-simple-multiplayer-example
CONTATO:
Em caso de dúvidas: Souris#1792 (Discord, apenas).
Espero ter ajudado vocês com a UNET .
Já tive várias dúvidas sobre o movimento sincronizado da Unity. Porém, nada havia resolvido um problema: A unity chama no máximo 29 vezes o Transform Sync, o que deixa o jogo praticamente chato, pois é ruim ver umas travadas. Por isto, venho à fazer um tutorial para um Smooth Movement na Unity:
OBS.: Não testei por outros. Pelo que sei, só funciona na HLAPI.
DOWNLOAD .CS:
Script ~ https://cdn.discordapp.com/attachments/419872942105559046/421440250775076874/Sync.cs
SCRIPT:
- Código:
using UnityEngine;
using UnityEngine.Networking;
public class Sync : NetworkBehaviour
{
[SyncVar]
Vector3 realPosition = Vector3.zero;
[SyncVar]
Quaternion realRotation;
void Update()
{
if (isLocalPlayer)
{
realPosition = transform.position;
realRotation = transform.rotation;
CmdSync(transform.position, transform.rotation);
}
else
{
transform.position = realPosition;
transform.rotation = realRotation;
}
}
[Command]
void CmdSync(Vector3 position, Quaternion rotation)
{
RpcSync(position, rotation);
}
[ClientRpc]
void RpcSync(Vector3 position, Quaternion rotation)
{
realPosition = position;
realRotation = rotation;
}
}
COMO USAR:
Coloque este script dentro de um objeto que você queira sincronizar, e pronto, o Script em si já faz a magia.
REFERÊNCIAS:
https://docs.unity3d.com/Manual/UNetUsingHLAPI.html
https://docs.unity3d.com/Manual/net-RPCDetails.html
https://docs.unity3d.com/Manual/UNetActions.html
https://docs.unity3d.com/ScriptReference/Networking.ClientRpcAttribute.html
https://docs.unity3d.com/ScriptReference/Networking.CommandAttribute.html
https://docs.unity3d.com/Manual/UNetActions.html
https://answers.unity.com/questions/1140982/how-to-properly-use-clientrpc-and-command.html
https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html
https://docs.unity3d.com/Manual/UNetStateSync.html
MAIS RECOMENDADO:
https://unity3d.com/pt/learn/tutorials/topics/multiplayer-networking/identifying-local-player
https://docs.unity3d.com/Manual/UNet.html
https://docs.unity3d.com/Manual/UNetStateSync.html
https://unity3d.com/pt/learn/tutorials/topics/multiplayer-networking/introduction-simple-multiplayer-example
CONTATO:
Em caso de dúvidas: Souris#1792 (Discord, apenas).
Espero ter ajudado vocês com a UNET .
NKKF- ProgramadorMaster
- PONTOS : 4796
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Smooth Movement Unity (UNET)
mas tipo se eu querer modificar uma boleana é so substituir o vector3/quartenion por um bool ?
Re: [TUTORIAL] Smooth Movement Unity (UNET)
Não amigo, mas a lógica é +- assim mesmo. Tente modificar o código para isto >_O
NKKF- ProgramadorMaster
- PONTOS : 4796
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Smooth Movement Unity (UNET)
vc pode dar um exemplo de como fazer?Souris escreveu:Não amigo, mas a lógica é +- assim mesmo. Tente modificar o código para isto >_O
Re: [TUTORIAL] Smooth Movement Unity (UNET)
Sim, você utiliza as Sync Vars, veja alguns links que eu deixei nas Referências e recomendados..
NKKF- ProgramadorMaster
- PONTOS : 4796
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Smooth Movement Unity (UNET)
https://www.schultzgames.com/t6796-duvidamultiplayer-unet-como-sincronizar-variaveisbool?highlight=sincronizar+boolDom3000 escreveu:vc pode dar um exemplo de como fazer?Souris escreveu:Não amigo, mas a lógica é +- assim mesmo. Tente modificar o código para isto >_O
Veja(^)
Phph09- Profissional
- PONTOS : 3767
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Smooth Movement Unity (UNET)
será que assim funciona ?
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;
public class Sincronizacao :NetworkBehaviour
{
public Poder PoderNet;
[SyncVar]
public bool B0 = false, B1 = false, B2 = false,
B3 = false, B4 = false, B5 = false, B6 = false,
B7 = false, B8 = false, B9 = false, B10 = false;
void Start()
{
PoderNet = GetComponent<Poder>();
}
public void Update()
{
if (!isServer)
{
return;
}
PoderNet.B0 = B0;
PoderNet.B1 = B1;
PoderNet.B2 = B2;
PoderNet.B3 = B3;
PoderNet.B4 = B4;
PoderNet.B5 = B5;
PoderNet.B6 = B6;
PoderNet.B7 = B7;
PoderNet.B8 = B8;
PoderNet.B9 = B9;
PoderNet.B10 = B10;
}
}
Re: [TUTORIAL] Smooth Movement Unity (UNET)
Provavelmente não;Dom3000 escreveu:será que assim funciona ?
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;
public class Sincronizacao :NetworkBehaviour
{
public Poder PoderNet;
[SyncVar]
public bool B0 = false, B1 = false, B2 = false,
B3 = false, B4 = false, B5 = false, B6 = false,
B7 = false, B8 = false, B9 = false, B10 = false;
void Start()
{
PoderNet = GetComponent<Poder>();
}
public void Update()
{
if (!isServer)
{
return;
}
PoderNet.B0 = B0;
PoderNet.B1 = B1;
PoderNet.B2 = B2;
PoderNet.B3 = B3;
PoderNet.B4 = B4;
PoderNet.B5 = B5;
PoderNet.B6 = B6;
PoderNet.B7 = B7;
PoderNet.B8 = B8;
PoderNet.B9 = B9;
PoderNet.B10 = B10;
}
}
Coloque o syncvar no poder.B0, poder.B1..., nao no B0,B1...
Para sincronizalas você deverá trabalhar com Command e ClientRpc
Exemplo:
- Código:
[SyncVar]
public bool B0;
void Start(){
//Passando o valor true, sera atribuido o valor true na variavel B0 desse SCRIPT para todos os players
CmdSet(true);
}
//Envia para o Server
[Command]
void CmdSet(bool b){
B0 = b;
RpcSet(b);
}
//Distribui A Informacao para Os Outros Players
//Envia para os clients
[ClientRpc]
void RpcSet(bool b){
B0 = b;
}
Phph09- Profissional
- PONTOS : 3767
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Tópicos semelhantes
» Onde Acho tutorial sobre UNet MULTIPLAYER?
» [TUTORIAL] Tutorial Unity 3D Movimentação de Personagem com Botões UI
» [TUTORIAL] Como utilizar o aplicativo Unity Remote 4 com a UNITY 5
» [TUTORIAL] Como colocar videos na unity 3D [UNITY 5]
» [TUTORIAL] BeatMapping com Unity
» [TUTORIAL] Tutorial Unity 3D Movimentação de Personagem com Botões UI
» [TUTORIAL] Como utilizar o aplicativo Unity Remote 4 com a UNITY 5
» [TUTORIAL] Como colocar videos na unity 3D [UNITY 5]
» [TUTORIAL] BeatMapping com Unity
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos