[TUTORIAL] Ciclo de dia e noite com sync no multiplayer
2 participantes
Página 1 de 1
[TUTORIAL] Ciclo de dia e noite com sync no multiplayer
Olá a todos! como estão?
Bom, estou compartilhando mais um script q encontrei jogado aqui no meu pc, desta um script que além de ter o ciclo de dia e noite, ele também sincroniza a hora entre os clientes!
Espero que seja útil para seus jogos multiplayer!
Bom, estou compartilhando mais um script q encontrei jogado aqui no meu pc, desta um script que além de ter o ciclo de dia e noite, ele também sincroniza a hora entre os clientes!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Networking;
using UnityEngine;
public class DiaENoite : NetworkBehaviour {
public float DuraçãoDoDiaEmMinutos = 24;
[Range(0,24)]
[SyncVar]
public int Hora;
[SyncVar]
public float Minutos;
[Space]
public Light Sol;
public Light Lua;
float ValueTo23;
float ValueTo18;
void LateUpdate()
{
Invoke("CicloDiario", DuraçãoDoDiaEmMinutos / 24);
}
void CicloDiario()
{
if (isServer)
{
if (!isServer)
return;
#region Definir Tempo
if (Hora < 23)
{
if (Minutos >= 60)
{
Hora += 1;
Minutos = 0;
}
}
if (Hora > 0)
{
if (Minutos < 0)
{
Hora -= 1;
Minutos = 0;
}
}
if (Hora >= 23)
{
Hora = 0;
}
else
{
if (Minutos < 0)
{
Minutos = 0;
}
}
#endregion
//Definir o tempo de rotação
Minutos += (Time.deltaTime * 60 / DuraçãoDoDiaEmMinutos);
CmdTime(Hora, Minutos);
}
//Definir rotação
float Rotação = (15 * Hora + (((Minutos * 1.666666666666667f) / 100) * 15)) - 90;
//Rodar o sol
Sol.transform.localEulerAngles = new Vector3(Rotação, 0, 0);
float SunRoatation = Mathf.Clamp(Rotação, -90, 90);
ValueTo23 = Mathf.Clamp(Mathf.Abs(Mathf.DeltaAngle(Rotação, (15 * 23 + (((59 * 1.666666666666667f) / 100) * 15)) - 90) / 100), 0, 1);
ValueTo18 = Mathf.Clamp(Mathf.Abs(Mathf.DeltaAngle(Rotação, (15 * 21 + (((59 * 1.666666666666667f) / 100) * 15)) - 90) / 100), 0, 1);
RenderSettings.ambientIntensity = Mathf.Clamp(Mathf.Pow(ValueTo23 / 1.2f, 4f) * 1.4f, 0, 1f);
RenderSettings.reflectionIntensity = Mathf.Clamp(Mathf.Pow(ValueTo23 / 1.2f, 4f) * 1.4f, 0, 1f);
Sol.intensity = Mathf.Clamp(Mathf.Pow(ValueTo23, 2), 0, 1);
Sol.colorTemperature = Mathf.Clamp(Mathf.Pow(ValueTo18, 1.1f), 0.5f, 1f) * 6800;
}
[Command]
void CmdTime(int _Hora, float _Minutos)
{
Hora = _Hora;
Minutos = _Minutos;
}
}
Espero que seja útil para seus jogos multiplayer!
Última edição por dstaroski em Ter Jan 22, 2019 11:58 am, editado 1 vez(es) (Motivo da edição : Adicionado Tutorial no título)
Tópicos semelhantes
» Ciclo Dia e Noite Realista
» Como fazer um ciclo dia e noite com transição de skyboxes?
» [TUTORIAL] Sistema de dia e noite básico
» [TUTORIAL] Simples Sistema De Noite e Dia
» [TUTORIAL] Script super simples Para ficar de Dia e de Noite Automaticamente.
» Como fazer um ciclo dia e noite com transição de skyboxes?
» [TUTORIAL] Sistema de dia e noite básico
» [TUTORIAL] Simples Sistema De Noite e Dia
» [TUTORIAL] Script super simples Para ficar de Dia e de Noite Automaticamente.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos