Todos os veiculos mudando de cor no multplayer, como resolver ?
4 participantes
Página 1 de 1
Todos os veiculos mudando de cor no multplayer, como resolver ?
Boa noite, estou com um problema no jogo que estou desenvolvendo, estou criando um jogo de roleplay multjogador (android/pc/IOS), mas estou tendo problemas ao adicionar cores aos veiculos assista o video para entender melhor oque está acontecendo, o audio está ruim.
video >> https://drive.google.com/open?id=11pISfe6Kl0fQfv0HLsN_inc0oE9GJL5a << desculpe pelo audio pessimo
quem quiser me ajudar a terminar este projeto, me avisa nos comentarios que eu passo meu contato, estou olhando o forum diariamente.
o script da oficina eu tirei daqui do forum mesmo >>> https://www.schultzgames.com/t5597-tutorial-sistema-de-oficina-de-carros#39480.
imagens do jogo:
sse não vizualizar clique aqui: Visualizar
caso nao consiga visualizar, clique aqui: Visualizar
video >> https://drive.google.com/open?id=11pISfe6Kl0fQfv0HLsN_inc0oE9GJL5a << desculpe pelo audio pessimo
quem quiser me ajudar a terminar este projeto, me avisa nos comentarios que eu passo meu contato, estou olhando o forum diariamente.
o script da oficina eu tirei daqui do forum mesmo >>> https://www.schultzgames.com/t5597-tutorial-sistema-de-oficina-de-carros#39480.
imagens do jogo:
sse não vizualizar clique aqui: Visualizar
caso nao consiga visualizar, clique aqui: Visualizar
malukop- Iniciante
- PONTOS : 2020
REPUTAÇÃO : 0
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
malukop escreveu:Boa noite, estou com um problema no jogo que estou desenvolvendo, estou criando um jogo de roleplay multjogador (android/pc/IOS), mas estou tendo problemas ao adicionar cores aos veiculos assista o video para entender melhor oque está acontecendo, o audio está ruim.
video >> https://drive.google.com/open?id=11pISfe6Kl0fQfv0HLsN_inc0oE9GJL5a << desculpe pelo audio pessimo
quem quiser me ajudar a terminar este projeto, me avisa nos comentarios que eu passo meu contato, estou olhando o forum diariamente.
o script da oficina eu tirei daqui do forum mesmo >>> https://www.schultzgames.com/t5597-tutorial-sistema-de-oficina-de-carros#39480.
imagens do jogo:
se não vizualizar clique aqui: Vizualizar
caso nao consiga vizualizar, clique aqui: Vizualizar
malukop- Iniciante
- PONTOS : 2020
REPUTAÇÃO : 0
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
Tais Usando o Mesmo, Coloque um Material Para Cada.
Magnatah- Instrutor
- PONTOS : 3550
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
nao dá pq, os veiculos instanciados partem do mesmo prefab!Magnatah escreveu:Tais Usando o Mesmo, Coloque um Material Para Cada.
malukop- Iniciante
- PONTOS : 2020
REPUTAÇÃO : 0
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
são clones!malukop escreveu:nao dá pq, os veiculos instanciados partem do mesmo prefab!Magnatah escreveu:Tais Usando o Mesmo, Coloque um Material Para Cada.
malukop- Iniciante
- PONTOS : 2020
REPUTAÇÃO : 0
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
malukop escreveu:são clones!malukop escreveu:nao dá pq, os veiculos instanciados partem do mesmo prefab!Magnatah escreveu:Tais Usando o Mesmo, Coloque um Material Para Cada.
Você pode criar um novo material via código e aplicar nas meshes do veículo instanciado.
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
Boa noite Marcos, eu fiz exatamente isso, só que tem um problema, o mesh renderer tem uma opção chamada "Materials" e nela tem o size, nos veiculos geralmente tem mais de um material linkado pelo size, mas via script não consigo acessar as demais opções, ex:MarcosSchultz escreveu:malukop escreveu:são clones!malukop escreveu:nao dá pq, os veiculos instanciados partem do mesmo prefab!Magnatah escreveu:Tais Usando o Mesmo, Coloque um Material Para Cada.
Você pode criar um novo material via código e aplicar nas meshes do veículo instanciado.
se no size tiver 6 materias, somente o primeiro é alterado, nao concegui trocar os outros, olha um codigo que ultilizei:
MeuMeshrenderer.materials[0] = MeuMaterial; // é como se fosse uma arrays mas coloca o numero alí e nao vai;
MeuMeshrenderer.material = MeuMaterial; // nesse funciona, mas só linka no primeiro size.
eu ja alterei o numero onde tá [0] de acordo com o material que quero trocar mas nao vai;
malukop- Iniciante
- PONTOS : 2020
REPUTAÇÃO : 0
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
Você esta usando RPC para mandar pro servidor as alterações da cor do carro? Caso não ai o problema é o material mesmo, mas se tu tiver usando RPC, poste seu código, pois geralmente isso acontece pois você não esta setando a cor no seu carro alvo pelo servidor, e sim mandando a alteração para todos carros existentes na cena.
rafaelllsd- ProgramadorMaster
- PONTOS : 5244
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
Boa noite Rafael, estou Usando RPC, se puder, olha meu codigo:rafaelllsd escreveu:Você esta usando RPC para mandar pro servidor as alterações da cor do carro? Caso não ai o problema é o material mesmo, mas se tu tiver usando RPC, poste seu código, pois geralmente isso acontece pois você não esta setando a cor no seu carro alvo pelo servidor, e sim mandando a alteração para todos carros existentes na cena.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using UnityStandardAssets.Vehicles.Car;
public class Oficina : NetworkBehaviour {
public GameObject[] Roda1, Roda2, Roda3, Roda4; //Aqui é as rodas
public Material[] material1;
public GameObject _canvasVelo, _canvasOficina, _pivoOficina, _cameraOF; //Aqui é os canvas, camera, e o pivo da Oficina (Atenção nos Nomes)
//Pintura//
public Button _buttonPintar, _buttonOficina, _buttonSair, _buttonEsquerda, _buttonDireita; //Aqui é os Buttons basta linkar os que esta pedindo que ele faz as açoes
public Color[] cores; //Aqui e suas cores
public Material materialDoObjeto; //Aqui voce linka o Material do seu veiculo
int Indice, Atual;
int Indice2,
public bool ScriptOff;
void Awake()
{
_pivoOficina = GameObject.Find("Oficina"); //Linka a Pivo da oficina automaticamente
_cameraOF = GameObject.Find("CameraOF"); //Linka a camera da Oficina automaticamente
if (_pivoOficina == null)
{ //Verifica se o pivo e nulo
GetComponent<Oficina>().enabled = false;
_buttonOficina.gameObject.SetActive(false);
_canvasOficina.gameObject.SetActive(false);
}
}
void Start()
{
// Myrenderer.material = Material.Instantiate(new Material(text));
//materialDoObjeto = Myrenderer.material;
Oficinas(false);
//Setar Botoes//
_buttonSair.onClick = new Button.ButtonClickedEvent();
_buttonPintar.onClick = new Button.ButtonClickedEvent();
_buttonOficina.onClick = new Button.ButtonClickedEvent();
_buttonEsquerda.onClick = new Button.ButtonClickedEvent();
_buttonDireita.onClick = new Button.ButtonClickedEvent();
_buttonPaintDireita.onClick = new Button.ButtonClickedEvent();
_buttonPaintEsquerda.onClick = new Button.ButtonClickedEvent();
_buttonEsquerda.onClick.AddListener(() => Esquerda());
_buttonDireita.onClick.AddListener(() => Direita());
_buttonOficina.onClick.AddListener(() => Oficinas(true));
_buttonPintar.onClick.AddListener(() => CmdEnviarCor());
_buttonSair.onClick.AddListener(() => Oficinas(false));
_buttonPaintDireita.onClick.AddListener(() => PinturaDireita());
_buttonPaintEsquerda.onClick.AddListener(() => PinturaEsquerda());
if (_pivoOficina == null)
{
_cameraOF.GetComponent<Camera>().depth = -4;
}
else
{
_cameraOF.GetComponent<Camera>().depth = 2;
}
}
void Update()
{
if (hasAuthority)
{
ScriptOff = true;
}
if (ScriptOff)
{
if (Vector3.Distance(transform.position, _pivoOficina.transform.position) <= 1)
{ //Verifica a distancia para a tivar e desativar o Button da Oficina
_buttonOficina.gameObject.SetActive(true);
}
else
{
_buttonOficina.gameObject.SetActive(false);
}
if (Atual < Roda1.Length - 1)
{
_buttonDireita.gameObject.SetActive(true);
}
else
{
_buttonDireita.gameObject.SetActive(false);
}
if (Atual > 0)
{
_buttonEsquerda.gameObject.SetActive(true);
}
else
{
_buttonEsquerda.gameObject.SetActive(false);
}
}
}
private void Direita()
{
if (ScriptOff)
{
//Faz açao de trocar a roda para direita
Roda1[Atual].SetActive(false);
Roda2[Atual].SetActive(false);
Roda3[Atual].SetActive(false);
Roda4[Atual].SetActive(false);
Atual++;
Roda1[Atual].SetActive(true);
Roda2[Atual].SetActive(true);
Roda3[Atual].SetActive(true);
Roda4[Atual].SetActive(true);
}
}
private void Esquerda()
{
if (ScriptOff)
{
//Faz açao de trocar a roda para esquerda
Roda1[Atual].SetActive(false);
Roda2[Atual].SetActive(false);
Roda3[Atual].SetActive(false);
Roda4[Atual].SetActive(false);
Atual--;
Roda1[Atual].SetActive(true);
Roda2[Atual].SetActive(true);
Roda3[Atual].SetActive(true);
Roda4[Atual].SetActive(true);
}
}
private void Oficinas(bool OP)
{
//Ativa e desativa os Button
_canvasOficina.gameObject.SetActive(OP);
_buttonPintar.gameObject.SetActive(OP);
_buttonSair.gameObject.SetActive(OP);
_cameraOF.gameObject.SetActive(OP);
GetComponent<Rebaixar>().enabled = (OP);
GetComponent<CarUserControl>().freiodemao = (OP);
//
_canvasVelo.gameObject.SetActive(!OP);
}
[ClientRpc]
public void RpcColorir()
{//Aqui altera a cor
if (Indice < cores.Length)
{
materialDoObjeto.SetColor("_Color", cores[Indice]);
Indice++;
}
else
{
materialDoObjeto.SetColor("_Color", cores[0]);
Indice = 1;
}
}
[Command]
public void CmdEnviarCor()
{
RpcColorir();
}
private void PinturaDireita()
{
if (ScriptOff)
{
//Faz açao de trocar a roda para direita
Atual2++;
materialDoObjeto = material1[Atual2];
}
}
private void PinturaEsquerda()
{
if (ScriptOff)
{
//Faz açao de trocar a roda para esquerda
Atual2--;
materialDoObjeto = material1[Atual2];
}
}
}
malukop- Iniciante
- PONTOS : 2020
REPUTAÇÃO : 0
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
Não sou muito familiarizado com o Unet, mas pelo que pesquisei no fórum da unity, você deve mandar o objeto e a cor por RPC.
Isso não acontece com o Photon PUN por exemplo, no photon você deve mandar o id do seu "NetworkView", e no RPC procurar o item que possui o id e somente depois fazer a alteração com o objeto encontrado.
- Código:
public void RpcColorir (GameObject carro, Color cor) {
//Acontece a troca de cores
}
Isso não acontece com o Photon PUN por exemplo, no photon você deve mandar o id do seu "NetworkView", e no RPC procurar o item que possui o id e somente depois fazer a alteração com o objeto encontrado.
rafaelllsd- ProgramadorMaster
- PONTOS : 5244
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
tem como usar o [syncvar] para sincronizar a variavel, mas acredito que tbm vai alterar o material de todos, pelo que pesquisei a solução seria oque o Marcos falou, só que para isso dar certo preciso saber como linkar o material instanciado no mesh renderer como disse lá em cima:rafaelllsd escreveu:Não sou muito familiarizado com o Unet, mas pelo que pesquisei no fórum da unity, você deve mandar o objeto e a cor por RPC.Se isso não funcionar provavelmente vai ser os materiais como disse anteriormente o Marcos e o Magnatah.
- Código:
public void RpcColorir (GameObject carro, Color cor) {
//Acontece a troca de cores
}
Isso não acontece com o Photon PUN por exemplo, no photon você deve mandar o id do seu "NetworkView", e no RPC procurar o item que possui o id e somente depois fazer a alteração com o objeto encontrado.
"Boa noite Marcos, eu fiz exatamente isso, só que tem um problema, o mesh renderer tem uma opção chamada "Materials" e nela tem o size, nos veiculos geralmente tem mais de um material linkado pelo size, mas via script não consigo acessar as demais opções, ex:
se no size tiver 6 materias, somente o primeiro é alterado, nao concegui trocar os outros, olha um codigo que ultilizei:
MeuMeshrenderer.materials[0] = MeuMaterial; // é como se fosse uma arrays mas coloca o numero alí e nao vai;
MeuMeshrenderer.material = MeuMaterial; // nesse funciona, mas só linka no primeiro size.
eu ja alterei o numero onde tá [0] de acordo com o material que quero trocar mas nao vai;"
se eu souber como resolver isso, consigo resolver esse problema.
malukop- Iniciante
- PONTOS : 2020
REPUTAÇÃO : 0
Respeito as regras :
Re: Todos os veiculos mudando de cor no multplayer, como resolver ?
É que você não pode alterar elemento por elemento, você precisa setar a lista toda, exemplo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrocarMaterial : MonoBehaviour {
public GameObject objetoParaTrocarMaterial;
void Start () {
FuncaoTrocarMaterial (objetoParaTrocarMaterial);
}
void FuncaoTrocarMaterial(GameObject objeto){
MeshRenderer rend = objeto.GetComponent<MeshRenderer> ();
if (rend) {
Material novoMaterial = new Material (Shader.Find ("Standard"));
novoMaterial.color = Color.green;
//
Material[] materialArray = new Material[rend.materials.Length];
for (int x = 0; x < materialArray.Length; x++) {
materialArray [x] = novoMaterial;
}
//
rend.materials = materialArray;
}
}
}
Tópicos semelhantes
» Script único para todos os veículos no jogo?
» Como adicionar todos materiais de um Obj em um Array ou Lista?
» Como resolver
» Como ter a mesma imagem em todos os dispositivos?
» como resolver bordas pixelizadas?
» Como adicionar todos materiais de um Obj em um Array ou Lista?
» Como resolver
» Como ter a mesma imagem em todos os dispositivos?
» como resolver bordas pixelizadas?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos