[TUTORIAL] Deformar o terreno
+5
NOME-ALEATORIO
JohnRambo
MarcosSchultz
Weslley
Dom3000
9 participantes
Página 1 de 1
[TUTORIAL] Deformar o terreno
Galera esse Script deforma o terreno , com o click do Mouse pelas variaveis elas funcionam entre si e conforme os valores do Raio em funçao do AlturaT e Profundidade pode dar erro, tem que ajustar manualmente, se conseguirem melhoralo ficarei grato. o script vai na Camera
- Código:
#pragma strict
var Terreno: Terrain;
var Raio:float;
var Profundidade:float;
var AlturaT:float;
private var matrixAltura : float[,];
private var matrixTextura : float[,,];
private var tamanhoMatriz: int;
private var ResolucaoTextura: int;
private var QntLayers: int;
private var i: int;
private var j: int;
private var PontoX: float;
private var PontoZ: float;
private var Altura: float;
private var Area: float;
private var Area2 : float;
private var contacurva : float;
private var MousePosicao:Ray;
private var PontoMapa: RaycastHit;
function Start () {
ResolucaoTextura = Terreno.terrainData.alphamapResolution;
tamanhoMatriz = Terreno.terrainData.heightmapResolution;
QntLayers = Terreno.terrainData.alphamapLayers;
matrixAltura = new float[tamanhoMatriz,tamanhoMatriz];
matrixTextura = new float[ResolucaoTextura,ResolucaoTextura,QntLayers];
for (i=0; i<tamanhoMatriz;i++)
{
for (j=0; j<tamanhoMatriz;j++)
{
matrixAltura[i,j] = AlturaT/tamanhoMatriz;// a altura inial do terreno
}
}
for (i=0; i<ResolucaoTextura;i++)
{
for (j=0; j<ResolucaoTextura;j++)
{
matrixTextura[i,j,0] = 1;
matrixTextura[i,j,1] = 0;
matrixTextura[i,j,2] = 0;
}
}
Terreno.terrainData.SetAlphamaps(0,0,matrixTextura);
Terreno.terrainData.SetHeights(0,0,matrixAltura);
}
function Update () {
if(Input.GetMouseButton(0))
{
MousePosicao = GetComponent.<Camera>().ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(MousePosicao,PontoMapa))
{
i = PontoMapa.point.x;
j = PontoMapa.point.z;
PontoX = PontoMapa.point.x - Terreno.transform.position.x;
PontoZ = PontoMapa.point.z - Terreno.transform.position.z;
PontoX = (PontoX*Terreno.terrainData.heightmapResolution)/Terreno.terrainData.size.x;
PontoZ = (PontoZ*Terreno.terrainData.heightmapResolution)/Terreno.terrainData.size.z;
Area = Raio; // area do burraco tem que ser menor que a altura
Altura = Profundidade/Terreno.terrainData.heightmapResolution; // autura final do terreno tem que ser menor que o inicial
for (i=PontoX-Area; i<PontoX+Area;i++)
{
for (j=PontoZ-Area; j<PontoZ+Area;j++)
{
contacurva = ((PontoX - i)*(PontoX - i)) + ((PontoZ - j)*(PontoZ - j));
Area2 = Area*Area;
if(contacurva<Area2)
{
if((Altura * (contacurva/Area2)) < matrixAltura[j,i])
{
matrixAltura[j,i] = (Altura * (contacurva/Area2));
}
}
}
}
Terreno.terrainData.SetHeights(0,0,matrixAltura);
PontoX = PontoMapa.point.x - Terreno.transform.position.x;
PontoZ = PontoMapa.point.z - Terreno.transform.position.z;
PontoX = (PontoX*Terreno.terrainData.alphamapResolution)/Terreno.terrainData.size.x;
PontoZ = (PontoZ*Terreno.terrainData.alphamapResolution)/Terreno.terrainData.size.z;
Area = Raio; // area do burado pintada deve ser igual a area
//((PontoX - PontoXF)*(PontoX - PontoXF)) + ((PontoZ - PontoZF)*(PontoZ - PontoZF)) < (30*30)
for (i=PontoX-Area; i<PontoX+Area;i++)
{
for (j=PontoZ-Area; j<PontoZ+Area;j++)
{
contacurva = ((PontoX - i)*(PontoX - i)) + ((PontoZ - j)*(PontoZ - j));
Area2 = Area*Area; // controla a textura
if(contacurva<Area2){
matrixTextura[j,i,0] = 0; // controla a opaciadades das texturas
matrixTextura[j,i,1] = 1;
matrixTextura[j,i,2] = 0.5;
}
}
Terreno.terrainData.SetAlphamaps(0,0,matrixTextura);
http://Terreno.terrainData.SetHeights(0,0,matrixAltura);
// tM ---- TrH
// Pm ---- x
// (Pm*TrH)/tM
}
}
}}
Re: [TUTORIAL] Deformar o terreno
"pode dar erro" Isso Foi um como um (Viruz) no meu Projeto, Acabou com meu Mapa Todo, assim que Apertei Play!
Modificou Todo Terrain e o Prefab dentro da Pasta Raiz, sem Opção de Desfazer!
Deixou o Mapa Todo FLAT e quando Exclui o "Script" do Projeto,Excluiu meu Terrain Junto!
ou Seja, Acabou com meu Projeto de Meses, que Levei pra Fazer o Mapa!
Modificou Todo Terrain e o Prefab dentro da Pasta Raiz, sem Opção de Desfazer!
Deixou o Mapa Todo FLAT e quando Exclui o "Script" do Projeto,Excluiu meu Terrain Junto!
ou Seja, Acabou com meu Projeto de Meses, que Levei pra Fazer o Mapa!
Weslley- Moderador
- PONTOS : 5704
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Deformar o terreno
O que acontece é que este metodo deforma a mesh, e isto nao é serializado pela Unity.
Bastava ter fechado o projeto e aberto novamente que a mesh não seria salva. éh simples
Bastava ter fechado o projeto e aberto novamente que a mesh não seria salva. éh simples
Re: [TUTORIAL] Deformar o terreno
Eu Fiz isso Marcos, Assim que Percebi , Fechei e Abri Novamente sem Salvar ,e assim que abri o Projeto Novamente o Mapa estava igual, pois como Falei ele Modificou o "Terrain" na Pasta Raiz do Projeto! Sem Chance de Desfazer! Agora é não Desanimar e Começar o Mapa do Zero!
JohnRambo- Moderador
- PONTOS : 5152
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: [TUTORIAL] Deformar o terreno
Isto na verdade é preguiça da equipe da Unity de não fazer um serializable na matriz do terrain, por que por favor, pensa dar um erro ou algo que altere o terrain, e você clica em "não salvar", mas quando recarrega o projeto, paaa, salvou.
.-.
.-.
Re: [TUTORIAL] Deformar o terreno
Putz nem dei Bola na hora, pensei,"ahh vou Carregar o Projeto sem Salvar e pronto,tudo certo" mas quando carregou com o Mapa Flat, quase Virei o PC! Complicado, Demorei 1 mes pra Fazer todo esse Mapa,tava prontinho, Só tava Terminando o Sistema de AI e o game tava 90% pronto! Mapa tinha 2000x2000 tudo com LOD ,Todo Detalhado com Plantas, Arvores de Corte,Itens, Lagos,Texturas etc...Fiquei Muito Puto! só Aconselho a ninguém Colocar isso num projeto, se não quiser Perder o Mapa! Como o Jegue aqui! o.O
Sobrou uma Fotinho que Tinha tirado esses Dias atras!
[img][/img]
Sobrou uma Fotinho que Tinha tirado esses Dias atras!
[img][/img]
Re: [TUTORIAL] Deformar o terreno
bom por isso sempre é bom ir fazendo beckups do projeto quando for fazer alguma alteração grande.
Re: [TUTORIAL] Deformar o terreno
Claro Foi Burrice Minha, mas Tipo o Jogo tava Quase Pronto, Vi essa Deformação de Terreno pensei Opa, talvez de pra Adaptar no Game ficaria Interessante já que se Trava de um Jogo de Sobrevivência! ai Páhhh! Só Apartei Play e a Cagada ta Feita! o.OManawydan escreveu:bom por isso sempre é bom ir fazendo beckups do projeto quando for fazer alguma alteração grande.
Re: [TUTORIAL] Deformar o terreno
caraka nao sei oque vc fez pra isso acontecer no meu funciona direito
Re: [TUTORIAL] Deformar o terreno
caraca mano, é dificil msm fazer terrenos bem detalhados e quando consegue acontece isso '-'
MeverPlays- Mestre
- PONTOS : 3845
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: [TUTORIAL] Deformar o terreno
Recomendo fortemente armazenarem seus projetos na nuvem (eu utilizo o Bitbucket + Git) para melhorarem o processo gerenciamento do controle de versão dos seus projetos e facilitar o processo de recuperação.
Deiverson- Iniciante
- PONTOS : 3492
REPUTAÇÃO : 3
Respeito as regras :
Re: [TUTORIAL] Deformar o terreno
NOME-ALEATORIO escreveu:Triste Por Isso Uso Outros Projetos De Segundo Plano
eu costumo fazer assim também. Tipo tô lá com meu projeto principal em andamento... aí vejo um tutorial novo. antes de incrementá-lo no meu projeto principal, eu abro um outro projeto para fazer o teste deste tutorial nele.
se der tudo certo sem erro. eu coloco no meu projeto principal.... acho este método bem seguro
JohnRambo- Moderador
- PONTOS : 5152
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Tutorial criar game framework/engine do zero com JWJGL Java
» [TUTORIAL] Instanciar coisas no Terreno
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» Deformar mesh sem usar rigidbody e reconhecer força do impacto
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Instanciar coisas no Terreno
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» Deformar mesh sem usar rigidbody e reconhecer força do impacto
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos