SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Quero começa a desenvolver um jogo de luta porem eu queria aprender a faze
ajuda sobre skybox
Salvar objetos que foram destruidos entre cenas na unity
MEU SIMULADOR DE CARRO
Unity - SceneManager.LoadScene abre scene com objeto "vazio"
[_____IMPORTANTE_____] ALTERAÇÕES NA POLÍTICA DE COBRANÇA DA UNITY
[RESOLVIDO] Ausencia da funçao NavMesh na Unity 2022.2.12
Interação com elementos UI
[_____IMPORTANTE_____] ALTERAÇÕES NA POLÍTICA DE COBRANÇA DA UNITY - 2
Roll Up Um jogo de aventura e desáfios
Terminologia da Unity em outras engines
Como criar a iluminação do Sol no Sistema Solar?
Conexão de lobby pelo OnConnectedToMaster
Problema na exportção de projeto unity
[RESOLVIDO] Unity - Áudios estão emitindo som só Depois do Botão ser solto
Unity - Banco de Dados Online junto ao Jogo
Player virar para o inimigo(Prefab)
[TUTORIAL] Sistema De Save Game Ao Sair Da Fase
Problema de Sincronização de um objeto de um jogo multiplayer usa q Photon
Unity - Compartilhar meu Jogo
Alguém que manja do Google ADmob?
Unity - Avaliar meu Jogo
[RESOLVIDO] Destruir inimigo com o player.
Salvar e carregar dados na Unity de objetos prefabs sem sobrescrever os dad
Unity - Salvar os Dados do Jogador Online
Input.GetAxis() obedercer a orientação de um objeto.
ajuda com o sistema de drag and drop com controle no invetario
Como executar outros blocos fora do bloco static void Main()
Usando a biblioteca UnityEngine fora da Unity
Mixamo - Character Gratuito?
Touch mobile
Erro NullReferenceException Não consigo resolver
Criador de Sites Freelancer DISPONIVEL!!!
Unity - Não deixar o Jogador alterar o Jogo pelo regedit do pc?
Tiro com Botao UI (ME AJUDEM)
[Projeto em Andamento] Draug, um jogo de hordas
Vagas de programadores e modeladores para startup
Consigo herdar/ copiar parâmetros do animator da unity?
O que seriam os códigos-fonte?
[RESOLVIDO] Unity Vulkan - Out of memory! (allocating memory for image)
Unity Problema de Vírus
[TUTORIAL] Como fazer uma gota de água na Unity
Mirror ou Photon Pun 2 ??? para Mobile
Character Player Modular
Icones não aparecem na Interface da Unity
Verificar se player está posado em blogo
Logica para criar (Player, Inventario, Arma) - Mobile
Sistema de pegar passageiros
Trailer Final de O Labirinto II
Meu jogo não conecta no google play games
ALGUEM ME AJUDA PFV
Problema tentando inserir "Sprite"
Oferto Serviço Programação para Jogos
FAZER AÇÂO AO ENTRAR NO CAMPO DA CAMERA
[RESOLVIDO] QUEBRA DE LINHA NO PLACEHOLDER. Nao lembro como que faz
Unity - Qual o Limite Máximo de Linhas em um Script para q ele fique Leve?
movimento 2d
Alguém que ja publicou na steam pode me ajudar com isso?
Animação Unity toda bugada
UDaySurvival - Jogo de sobrevivência de mundo aberto para mobile!https://yo
Trailer do meu jogo O Labirinto II
Jogo Atisk (Trailer)
Adicionem meu jogo na lista de desejos
Discord!
Como executar a void de um outro scrypt
Shader não funciona no Unity URP
Jogo Mobile - Ultimate Flight Simulator - Real World SDK
Unity - FPS e CPU ???
Usar microfone na Unity
Jogo ficando escuro quando faço a Build pela cena menu
Dúvida sobre movimentação do personagem
[RESOLVIDO] ACESSAR SCRIPT DE OUTRO GAMEOBJECT
Para eu ter shader em meu projeto eu tenho que usar o hdrp ou o 3d padrao?
Rotate Camera Mobile
Sou modelador 3d (!!! Arquitetonico!!!) Disponivel !!!!!!
Preciso de alguém que saiba programação e Raycast
Servidor/cliente usando sockets
Assets carregados com addressables causando erro na versão "buildada"
Jogo multiplayer com salas - não vai para o lobby
Texto - Não escreve no 'play'. Clica mais não digita.
Câmera Não esta renderizando na segunda janela.
Movimento da Câmera No Android
[RESOLVIDO] - Unity não está mais funcionando o "Build and Run"
Precisa de modelador com ou sem experiência
Duvida com "mesclagem" de animação
Missoes Aparecerem aleatoriamente do nada
Dúvida pafra IOS
botoes não esta funcionando corretamente nem a fisica?
Duvida com NavMeshAgent
COMO AUMENTAR E DIMINUÍ A SENSIBILIDADE DO TOQUE POR CÓDICO (MOBILE)
A Licença da Unity só funciona se eu tiver Internet
Problema com OnTriggerEnter
Transparência ao colidir
bool para evitar de salvar frames repetido
Unity - Transições no AnimatorController rodando errado
problemas com "wall Jump" , atribuir força ao eixo X
Meu Jogo ja Esta Pronto! EXPERIMENTEM!!
JOSTICK NAO SE MOVE
botoes para mobile
Hoje à(s) 3:33 pm
Hoje à(s) 12:45 pm
Hoje à(s) 9:24 am
Ontem à(s) 9:02 pm
Ontem à(s) 1:37 pm
Ontem à(s) 9:47 am
Sáb Set 23, 2023 2:10 pm
Sáb Set 23, 2023 12:32 pm
Sex Set 22, 2023 9:01 pm
Qui Set 21, 2023 11:04 am
Qua Set 20, 2023 4:40 pm
Qua Set 20, 2023 9:15 am
Dom Set 17, 2023 12:17 pm
Sex Set 15, 2023 7:24 pm
Sex Set 15, 2023 5:41 pm
Sex Set 15, 2023 4:28 pm
Sex Set 15, 2023 10:56 am
Sex Set 15, 2023 10:15 am
Seg Set 11, 2023 11:43 am
Seg Set 11, 2023 11:31 am
Sáb Set 09, 2023 4:53 pm
Sáb Set 09, 2023 1:44 pm
Ter Set 05, 2023 11:12 pm
Ter Set 05, 2023 3:12 pm
Seg Set 04, 2023 11:53 pm
Seg Set 04, 2023 7:39 pm
Dom Set 03, 2023 9:47 pm
Sáb Set 02, 2023 11:53 am
Sex Set 01, 2023 2:21 pm
Qui Ago 31, 2023 8:19 pm
Qui Ago 31, 2023 6:15 pm
Qua Ago 30, 2023 11:21 am
Ter Ago 29, 2023 8:43 pm
Seg Ago 28, 2023 7:18 pm
Sáb Ago 26, 2023 4:49 pm
Sáb Ago 26, 2023 4:38 pm
Qui Ago 17, 2023 1:56 am
Qua Ago 16, 2023 10:21 pm
Seg Ago 14, 2023 12:28 pm
Dom Ago 06, 2023 5:24 pm
Dom Ago 06, 2023 10:58 am
Qui Ago 03, 2023 9:38 am
Qua Ago 02, 2023 8:20 am
Ter Ago 01, 2023 6:07 pm
Dom Jul 30, 2023 5:43 pm
Sáb Jul 29, 2023 7:24 pm
Qui Jul 27, 2023 9:27 am
Seg Jul 24, 2023 11:12 am
Seg Jul 24, 2023 12:44 am
Seg Jul 24, 2023 12:37 am
Seg Jul 24, 2023 12:17 am
Seg Jul 24, 2023 12:10 am
Qua Jul 19, 2023 11:37 am
Ter Jul 18, 2023 7:12 pm
Qua Jul 12, 2023 9:49 am
Ter Jul 11, 2023 8:58 am
Ter Jul 11, 2023 1:03 am
Seg Jul 10, 2023 9:10 pm
Sex Jul 07, 2023 4:14 pm
Ter Jul 04, 2023 12:11 am
Sex Jun 30, 2023 8:10 pm
Qui Jun 29, 2023 5:19 pm
Qui Jun 29, 2023 3:40 pm
Ter Jun 27, 2023 1:45 am
Seg Jun 19, 2023 11:03 am
Dom Jun 18, 2023 6:11 pm
Dom Jun 04, 2023 2:41 pm
Ter maio 30, 2023 7:28 pm
Ter maio 30, 2023 6:04 am
Seg maio 29, 2023 7:53 pm
Sáb maio 27, 2023 3:11 pm
Sex maio 26, 2023 4:59 pm
Sex maio 26, 2023 11:27 am
Qui maio 25, 2023 10:33 am
Sáb maio 20, 2023 12:25 pm
Ter maio 16, 2023 5:43 pm
Ter maio 16, 2023 5:42 pm
Ter maio 09, 2023 7:42 pm
Seg maio 08, 2023 7:13 am
Seg maio 08, 2023 6:38 am
Sáb maio 06, 2023 11:44 pm
Sáb maio 06, 2023 6:42 pm
Sáb maio 06, 2023 1:35 am
Qua maio 03, 2023 12:32 pm
Seg maio 01, 2023 8:51 pm
Dom Abr 30, 2023 8:49 pm
Dom Abr 30, 2023 5:06 pm
Sáb Abr 29, 2023 4:05 pm
Qui Abr 27, 2023 4:39 pm
Qui Abr 27, 2023 12:40 am
Ter Abr 25, 2023 5:33 pm
Ter Abr 25, 2023 10:23 am
Dom Abr 23, 2023 12:11 am
Sáb Abr 22, 2023 4:27 am
Sex Abr 21, 2023 11:38 pm
Sex Abr 21, 2023 10:21 pm
Qui Abr 20, 2023 4:57 pm
Qui Abr 20, 2023 12:28 pm
Qua Abr 19, 2023 3:03 pm



































































































[TUTORIAL] Sincronizando variáveis no multiplayer

4 participantes

Ir para baixo

TUTORIAL [TUTORIAL] Sincronizando variáveis no multiplayer

Mensagem por AnderGames Qua Out 25, 2017 9:49 pm

Fala galera! blz?
Depois de muito quebrar a cabeça, eu finalmente descobri como sincronizar variáveis de um script. (Lembrando que não irei ensinar a configurar Networking, apenas a sincronizar variáveis)
1º Crie seu script, e adapte-o para multiplayer. Importando a biblioteca de Networking, e trocando para NetworkBehaviour:
Código:
using UnityEngine.Networking;

public class NomeDoSeuScript : NetworkBehaviour {

2ª em uma linha antes da variável desejada coloque [SyncVar]:
Código:
   [SyncVar]
    public string Nome = "Nome";

    public Text Texto;
    public InputField LocalDeEscrita;

3º Crie uma condição para sua variável ser alterada, essa condição tem que ser "isLocalPlayer" (Se é o jogador local), e faça seu codigo:
Código:
       if (isLocalPlayer)
        {
            Nome = LocalDeEscrita.text;
        }
Lembrando que o jogador será instanciado automaticamente pelo seu Network Manager, então qualquer referência externa ao seu parefab deve ser feita pelos scripts não pelo inspector. Uma forma de fazer isso é usando o comando "FindObjectOfType" (Procurar por objetos do tipo) na void start. Ex.:
Código:
   void Start()
    {
        if (isLocalPlayer)
        {
            LocalDeEscrita = FindObjectOfType<InputField>();
        }
    }

4º Agora criamos uma void com "Cmd" (Sem aspas) antes do seu nome: "CmdNome" e em cima da void colocamos [Command], nas variáveis da void, colocamos o tipo de variável que você quer sincronizar (string, bool, GameObject, Transform, etc...), ficando assim: 
Código:
   [Command]
    public void CmdNome(string NovoNome)
    {
    }
Coloque o nome da variável dentro da void, um nome diferente do nome da variável que você quer sincronizar.

5º Crie uma void Update, LateUpdate ou FixedUpdate para podermos chamar a outra void q criamos. Ela será chamada se for jogador local if(isLocalPlayer): 
Código:
   void LateUpdate () {
        if (isLocalPlayer)
        {
            Nome = LocalDeEscrita.text;
            CmdNome(Nome);
        }
    }
* eu aproveitei a condição que criamos no passo 3. Note que ao chamar a void, eu chamei a variável que queremos sincronizar (Nome), e não a que pertencia a void (NovoNome).

6º Depois dentro da void "CmdNome" deixamos a variável "Nome" igual a variável local "NovoNome"
Código:
   [Command]
    public void CmdNome(string NovoNome)
    {
        Nome = NovoNome;
    }

7ª Se seu script for alterar algum UI, importe a blibioteca (Colocando em baixo de using UnityEngine.Networking; isso: using UnityEngine.UI;) e alteramos o texto fora do "isLocalPlayer":
Código:
       if (isLocalPlayer)
        {
            Nome = LocalDeEscrita.text;
            CmdNome(Nome);
        }
        Texto.text = Nome;

Pronto! Seu script ficará parecido com esse: 
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using UnityEngine.Networking;

public class SincVarTest : NetworkBehaviour {

    [SyncVar]
    public string Nome = "Nome";

    public Text Texto;
    public InputField LocalDeEscrita;

    void Start()
    {
        if (isLocalPlayer)
        {
            LocalDeEscrita = FindObjectOfType<InputField>();
        }
    }

    void LateUpdate () {
        if (isLocalPlayer)
        {
            Nome = LocalDeEscrita.text;
            CmdNome(Nome);
        }
        Texto.text = Nome;
    }

    [Command]
    public void CmdNome(string NovoNome)
    {
        Nome = NovoNome;
    }

Agora é só fazer o teste :D
AnderGames
AnderGames
Programador

Masculino PONTOS : 3006
REPUTAÇÃO : 50
Idade : 22
Áreas de atuação : Animação, Design de Interface, Programação, Modelagem
Respeito as regras : [TUTORIAL] Sincronizando variáveis no multiplayer WvDYdlf

https://www.youtube.com/c/AnderSystemsTests

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Sincronizando variáveis no multiplayer

Mensagem por Phph09 Qui Out 26, 2017 7:08 am

seu tópico foi criado em duvidas em geral sendo um tutorial dos membros .

Está ótimo irá ajudar muita gente
Phph09
Phph09
Profissional
Profissional

Masculino PONTOS : 3366
REPUTAÇÃO : 240
Idade : 18
Respeito as regras : [TUTORIAL] Sincronizando variáveis no multiplayer WvDYdlf

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Sincronizando variáveis no multiplayer

Mensagem por PauloFR Qui Out 26, 2017 2:03 pm

Phph09 escreveu:seu tópico foi criado em duvidas em geral sendo um tutorial dos membros .

Está ótimo irá ajudar muita gente
Movido para a área correta.
PauloFR
PauloFR
ProgramadorMaster

Masculino PONTOS : 3758
REPUTAÇÃO : 376
Idade : 21
Áreas de atuação : C++/C# | Modelagem3D | PixelArt2D | Musica
Respeito as regras : [TUTORIAL] Sincronizando variáveis no multiplayer Aad8pUi

https://www.schultzgames.com/u8329

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Sincronizando variáveis no multiplayer

Mensagem por Yuri Heinz Dom Jan 28, 2018 12:32 am

so de eu usar o codigo como NetworkBehaviour
e usar [SyncVar] antes da variavel ele ja aparece para todos os players online ?
tipo eu tenho uns scripts que precisão funcionar igual aos mesmos objetos da lan tipo veiculos portas escadas, por enquanto off line eles funcionam perfeitamente. o game é uma mistura de gta com CS se puder me ajudar agradeço abraço.
Yuri Heinz
Yuri Heinz
Avançado
Avançado

Masculino PONTOS : 3190
REPUTAÇÃO : 38
Idade : 27
Respeito as regras : [TUTORIAL] Sincronizando variáveis no multiplayer WvDYdlf

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Sincronizando variáveis no multiplayer

Mensagem por AnderGames Dom Jan 28, 2018 11:42 am

Yuri Heinz escreveu:so de eu usar o codigo como NetworkBehaviour
e usar [SyncVar] antes da variavel ele ja aparece para todos os players online ?
tipo eu tenho uns scripts que precisão funcionar igual aos mesmos objetos da lan tipo veiculos portas escadas, por enquanto off line eles funcionam perfeitamente. o game é uma mistura de gta com CS se puder me ajudar agradeço abraço.
Hum... interessante, infelizmente não sei uma forma mais prática para sincronizar as variáveis de posicionamento dos veículos enquanto o Client estiver dirigindo ele, mas para sincronizar as variáveis vc criar o esqueleto que ensinei acima (Eu não sei como sincronizar variáveis de uma forma mais prática), mas tam algumas observações:
** Crie apenas uma void Cmd, mais de uma não serão sincronizadas.
Vc pode fazer com que quando o Jogador entre no veículo, o mesmo seja chamado no game dos outros jogadores (crie um sistema de identificação por números, quando o jogador entrar no carro ele vai procurar no no jogo do outro jogador o carro que o número seja o mesmo), então na void "CmdNome" vc coloca 2 variáveis Vector3:
Código:
   [Command]
    public void CmdSyncCarPos(Vector3 _pos, Vector3 _rot)
    {

    }

No mesmo script crie 2 variáveis também Vector3 (posição e rotação), e na void FixedUpdate coloque os valores dessa variável. Depois chame a void com essas 2 variáveis criadas (coloque a mesma ordem que está na void):
Código:
   [SyncVar]
    public Vector3 posicao;
    [SyncVar]
    public Vector3 rotacao;

    void FixedUpdate()
    {
        if (isLocalPlayer)
        {
            posicao = transform.position;
            rotacao = transform.eulerAngles;
            CmdSyncCarPos(posicao, rotacao);
        }
    }
Depois, em algum script NetworkBehaviour do jogador, faça com q ele identifique se é o jogador local. Para isso basta criar uma bool e adicionar esse comando na void Start:
Código:
   public bool JogadorLocal;

    void Start()
    {
        JogadorLocal = isLocalPlayer;
    }
No script q está sendo responsável por sincronizar a posição do carro, adicione uma variável do tipo do script q está o código acima (Se o nome do script acima for "JogadorLocal", crie uma variável do tipo "JogadorLocal" sem aspas):
Código:
public class SyncCarPos : NetworkBehaviour
{
    public JogadorLocal JogadorNoControle;

    [SyncVar]
    public Vector3 posicao;
    [SyncVar]
    public Vector3 rotacao;
para identificar o "JogadorNoControle" use algum sistema para isso (não vou ensinar a fazer isso aqui pois o tópico ficaria enorme).
Depois, no troque os comandos "isLocalPlayer" para "JogadorNoControle.JogadorLocal ":
Código:
   void FixedUpdate()
    {
        if (JogadorNoControle.JogadorLocal)
        {
            posicao = transform.position;
            rotacao = transform.eulerAngles;
            CmdSyncCarPos(posicao, rotacao);
        }
    }
Agora, deixa a void "CmdSyncCarPos" da seguinte maneira:
Código:
    [Command]
    public void CmdSyncCarPos(Vector3 _pos, Vector3 _rot)
    {
        posicao = _pos;
        rotacao = _rot;
    }
pronto! Qualquer dúvida, sinta-se a vontade para perguntar, se quiser q eu ensine a fazer o sistema para identificar o "JogadorNoControle" é só comentar
AnderGames
AnderGames
Programador

Masculino PONTOS : 3006
REPUTAÇÃO : 50
Idade : 22
Áreas de atuação : Animação, Design de Interface, Programação, Modelagem
Respeito as regras : [TUTORIAL] Sincronizando variáveis no multiplayer WvDYdlf

https://www.youtube.com/c/AnderSystemsTests

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Sincronizando variáveis no multiplayer

Mensagem por Yuri Heinz Dom Jan 28, 2018 3:15 pm

nossa cara vc é muito fera 
vou colocar o script que eu fiz pra entrar no veiculo, pra fazer o jogo offline ou multiplayer igual o da epoca do ps2 que a tela divide no meio eu ja consegui. 
esse primeiro codigo vai no player, dai ele identifica o objeto no caso o veiculo e fala pra ele se o player entrou. se o veiculo esta oucupado é bem expecifico o codigo e tem varias tratativas de erro n da nenhum bug 
Código:
using UnityEngine;
using System.Collections;

public class Conduzir : MonoBehaviour {
   [Header ("Parametros")]
   public Transform Character;
   public GameObject ObjetoDeInteracao;
   public Rotacionar CodRotacionar;
   public PlayerInputs codInputs;



   [Header ("Objeto A Interagir")]
   public string ObjetoTipo;
   public Transform PontoDeEntrada, PontoDeSaida, PontoUtilizavel;

   public ObjetoConduzivel CodConduzivel;

   public GameObject BotaoAcao;


   [Header ("Inputs")]
   public bool InputInteracao;
   public bool ObjetoInteragivel;


   [Header ("Quando estiver Conduzindo")]

   public bool Utilizando;

   public bool Validado;


   public float movementSpeed = 5.0f;
   public bool AjustedPosition;
   [Space(20)]

   [Header ("Timer Enter")]
   [Range(0,3)]
   public float TimeToEnter = 1.0f;
   [Range(0,3)]
   public float TimerEnter;
   public bool TimerEnterKey;

   [Space(20)]

   [Header ("Timer Exit")]
   [Range(0,3)]
   public float TimeToExit = 1.0f;
   [Range(0,3)]
   public float TimerExit;
   public bool TimerExitKey;



   private bool Desocupar ;

   // Use this for initialization
   void Start () {
      ObjetoTipo = ("Nenhum Objeto");
      codInputs = GetComponent<PlayerInputs> ();

   }

   // Update is called once per frame
   void Update () {
      //------------------- Inpults --------------------
      InputInteracao = codInputs.Interagir;


   

      if (CodConduzivel != null) {


         if (CodConduzivel.Ocupado == true && Utilizando == false && TimerEnterKey == false) {

            // --------Desativar -------------------  Desativar objetos;
            CodConduzivel.Ativo = false;

            ObjetoInteragivel = false;
            ObjetoDeInteracao = null;

            CodConduzivel = null;
            ObjetoTipo = ("Nenhum Objeto");

            PontoDeEntrada = null;
            PontoDeSaida = null;
            PontoUtilizavel = null;
         }





         if (InputInteracao == true) {    // se o comando de for precionado

               if (Utilizando == true) { // se o jogador estiver dentro do objeto;



                  if (TimerEnterKey == false) {
                     // --------Desativar -------------------  Sair da operação do objeto;
                     TimerExitKey = true;
                     CodConduzivel.Ativo = false;


                     transform.position = PontoDeSaida.position;
                     transform.rotation = Quaternion.Euler (0, PontoDeSaida.eulerAngles.y, 0);
                  }



               } else {   // se o jogador  estiver fora do objeto;

                  if (CodConduzivel != null) {
                     CodConduzivel.codPlayer = gameObject.GetComponent<Conduzir> ();



                     // -------------------Ocupar objeto --------------
                     CodConduzivel.Ocupado = true;

                     CodConduzivel.Validado = true;

                     BotaoAcao.SetActive (false);

                  }




               }
            
         }



         if (Utilizando == true) {          /// validação antes da utilização
            if (Validado == true) {      ///         evita bugs com mais de 1 player interagindo
               if (TimerEnterKey == false) {
                  CodConduzivel.Validado = false;

                  GetComponent<Status> ().Ocuado = true;

                  // / ---- ajustar posição para entrar apos validação
                  AjustedPosition = true;
                  TimerEnterKey = true;

                  // Desativar componentes
                  gameObject.GetComponent<Player> ().enabled = false;
                  gameObject.GetComponent<Escorregar> ().enabled = false;
                  gameObject.GetComponent<Rigidbody> ().isKinematic = true;
                  CodRotacionar.enabled = false;
               }
            }
         }



         // ajustar posição e rotação
         if (AjustedPosition == true) {
            Quaternion rotFinal = Quaternion.Euler (PontoDeEntrada.eulerAngles.x, PontoDeEntrada.eulerAngles.y, PontoDeEntrada.eulerAngles.z);
            Character.rotation = Quaternion.Slerp (Character.rotation, rotFinal, Time.deltaTime * movementSpeed);
            transform.position = Vector3.Lerp (transform.position, PontoDeEntrada.position, Time.deltaTime * movementSpeed);
            transform.rotation = PontoUtilizavel.rotation;

         }

         // Timer Enter -------------      tempo de entrada do personagem
         if (TimerEnterKey == true) {
            TimerEnter += Time.deltaTime;
            if (TimerEnter >= TimeToEnter) {
               AjustedPosition = false;
               TimerEnterKey = false;
               TimerEnter = 0;

                  // Ajustar para posição de Ultilização
                  transform.position = PontoUtilizavel.position;
                  Character.rotation = PontoUtilizavel.rotation;

                  CodConduzivel.Ativo = true;
               

            }
         }

         // Timer Exit  -------------      tempo de Saida do personagem
         if (TimerExitKey == true) {
            TimerExit += Time.deltaTime;
            if (TimerExit >= TimeToExit) {
               TimerExitKey = false;
               TimerExit = 0;
               Desocupar = true;    // -------------------desocupar objeto --------------

            }

         }

         if (Desocupar == true) {
            Desocupar = false;
            // -------------------desocupar objeto --------------

            GetComponent<Status> ().Ocuado = false;

            Utilizando = false;
            CodConduzivel.Ocupado = false;

            CodConduzivel.codPlayer = null;



            // Reativar Componentes
            gameObject.GetComponent<Player> ().enabled = true;
            gameObject.GetComponent<Escorregar> ().enabled = true;
            gameObject.GetComponent<Rigidbody> ().isKinematic = false;

            CodRotacionar.enabled = true;

            // --------Desativar -------------------  Desativar objetos;

            CodConduzivel.Ativo = false;
   
            ObjetoInteragivel = false;
            ObjetoDeInteracao = null;

            CodConduzivel = null;
            ObjetoTipo = ("Nenhum Objeto");

            PontoDeEntrada = null;
            PontoDeSaida = null;
            PontoUtilizavel = null;


         }





      }
   }

   void OnTriggerEnter (Collider otherEnter) {
      if (Utilizando == false) {
         if (otherEnter.CompareTag ("Conduzivel")) {

            ///------- detectando  ---------------------- obter controles do objeto
            ObjetoDeInteracao = otherEnter.gameObject;


            ObjetoInteragivel = true;
            CodConduzivel = otherEnter.GetComponent<ObjetoConduzivel> ();


            ObjetoTipo = CodConduzivel.ObjetoTipo;
            TimeToEnter = CodConduzivel.TimeToEnter;
            TimeToExit = CodConduzivel.TimeToExit;

            PontoDeEntrada = CodConduzivel.PontoDeEntrada;
            PontoDeSaida = CodConduzivel.PontoDeSaida;
            PontoUtilizavel = CodConduzivel.PontoUtilizavel;

            // printa botão de ação na tela;
            BotaoAcao.SetActive (true);
            BotaoAcao.GetComponent<TextMesh> ().text = CodConduzivel.AcaoDoObjeto;



         }

      }
   }


   void OnTriggerExit (Collider otherExit) {
      if (Utilizando == false) {

         if (otherExit.gameObject == ObjetoDeInteracao) {

            // Saindo da detecção
            BotaoAcao.SetActive (false);



            ObjetoInteragivel = false;
            ObjetoDeInteracao = null;

            CodConduzivel = null;
            ObjetoTipo = ("Nenhum Objeto");

            PontoDeEntrada = null;
            PontoDeSaida = null;
            PontoUtilizavel = null;




         }
      }
   }

}

esse segundo codigo é o que fica no veiculo, ele é so pra pasar as condiçoes que o veiculo se apresenta se esta ocupado o nome dele oque ele faz, vai servir pra fazer aquelas metralhadoras que ficam fixas em algum lugar tambem sabe kkk 
Código:
using UnityEngine;
using System.Collections;

public class ObjetoConduzivel : MonoBehaviour {

   [Header ("Parametros")]
   public string ObjetoTipo;
   public string AcaoDoObjeto;

   public Transform PontoDeEntrada, PontoDeSaida, PontoUtilizavel;
   public Conduzir codPlayer;


   [Header ("Controles")]

   [Header ("Se o objeto for do tipo utilizavel")]
   public bool Utilizavel;


   [Header ("Timer Interação")]
   [Range(0,3)]
   public float TimeToEnter = 1;
   [Range(0,3)]
   public float TimeToExit = 1;


   [Header ("Monitor")]
   public bool Ativo;
   public bool Validado;
   public bool Ocupado;

   public GameObject ObjetoAtivo;
   // Use this for initialization
   void Start () {

   }

   // Update is called once per frame
   void Update () {

      gameObject.GetComponent<BoxCollider> ().enabled = (!Ocupado);

      //reenvia informaçoes do jogador utilizador de volta para o jogador
      if (codPlayer != null) {
         codPlayer.Utilizando = Ocupado;
         codPlayer.Validado = Validado;

      }
      ObjetoAtivo.SetActive (Ativo);


   }
}
Yuri Heinz
Yuri Heinz
Avançado
Avançado

Masculino PONTOS : 3190
REPUTAÇÃO : 38
Idade : 27
Respeito as regras : [TUTORIAL] Sincronizando variáveis no multiplayer WvDYdlf

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos