se movimentarmos um objeto ap�s rotacionar
em nivel local ele vai usar a orienta��o transformada pela rotacao
se for em global vc vai orientar no eixo do mundo
mas se vc fazer isso vc deixa de considerar os eixos do objeto
para considerar os do mundo
para mudar o pivot basta de uma img ,obj � s� clicar nela e clicar
em Sprite Editor
-mudou o jeito de como se importa asset da assetstore
tem que ir no pesquisar clicar com o botao direito e ir na ultima
opcao
Luzes
-Tem como aplicar sim fontes de luz em jogos 2D e faz diferen�a
-em 2d sao mais usadas as direcionais, point e spotlight
directional
-vai iluminar tudo independente da posi�ao que a luz esteja
o que importa nessa luz � a rota��o e ela que vai deternimar a quantidade
luz recebida
elas tem suas propriedades
se escolher valor alto para intensidade vai acabar queimando
a visualizacao dos objetos de cena
bounce intensity � luz indireta
Shadow Type para jogos em 2d nao � muito lega
entao pode esquecer
Cookie vc pode imar uma imagen para fazer todo estilizado
Braw Hole efeito de n�voa em vola da luz
Flare efeito de brilho de quando olhamos para o sol, bem intendo mais
para 2.5D
Culing Mask determina quem vai receber os efeitos da Luz
POINT LIGHT
Ilumina em todas as dire��es e tem um range
enquanto a directional light ilumina tudo com o sol a Point Light
� como se fosse uma lanpada, depende de sua posicao para iluminar
os objetos
SPOT LIGHT
cria cone de luz com angulo e alcance
aposicao e rota�ao sao muito importantes
SPRITES
nao sao originalmente afetados pela luz
tem que criar novo material e ir em :
Shader->Sprites->Diffuse
vc pode colocar ou arrastar
a� vc coloca a luzno modo 3d um pouco mais para frente para ter realmente
innfluencia sobre o objeto
obs:mesmo que vc misture sprites com moleos 3d vc nao vai ter
aquela coisa feia grita de de saber nitidamente que
aquilo � 3d ou 2d
LAYERS
-layers de objetos(vc clica nele, vai l� em layer e escolhe
Add Layer
a� vc pode nomear o primeiro que poder digitar
e pode criar um segundo e terceiro
e para quer serve isso????
Vc escolhe a camada e diz que ela ora precisa ser eliminada a luz
ora n
indo em culling mas e marcando ou desmarcando layer
vc pode copiar objetos e falar que cada um
estt� com uma layer ativa
tem como ligar ou desligar luz pelo checkbox
CRIA�AO DE PREFABS
-se arrastar para as pastas j� � um prefab
l� do hierarchy para o project
se vc clicar no sprite aparece um campo prefab
e � s� arrastar para a cena para criar outro
se vc modificar algum ddas copias do prefab e
ir l� na aba prefab e aplicar Apply todos serao
modificados
pode ser feito indo no projeto->botao direito->prefab e jogar em
cima
MANIPULA�AO DE SPRITES VIA C�DIGO
//[Link](new Vector3(0, 0, 0));
//se vc tiver mexido, rotacionado o objeto antes toda a moviment��o �
mudada
//pois essa translacao obdece a rotacao, mesmo q quando vc clique nao veja
os eixos trocados
//[Link](new Vector3(0, 0, 0.5f));
//[Link] += new Vector3(0.1f, 0.1f, 0);
essa daqui resolve
[Link](new Vector3(0.03f, 0, 0),[Link]);
TRABALHANDO COM SCROLL HORIZONTAL SIMPLES
existe v�rias formas de se fazer
sao imagens que se repetem v�ria e varias vezes
-usa objeto 3d que � um Quad
Quando trabalhamos com 3d nao podemos colocar textura diretamente
no objeto tem que criar um material
mas para isso vc vai l� no sprite que quer colocar
clica nele vai em texture type e coloca default
e vai em wrap mode e coloca repeat e aplica
cria um material e escolher um material bom para imagens que tenham
partes transparentes Shader-Legacy Shader->Diffuse
a� � so jogar o sprite dentro do espano no material
e puxa o material e jogar dentro do squad
a� em material
offset vc movimenta e tillin vc diz quantas vezes quer que esteja
na textura
pode azer em x e y, mas a imagem tem que ser preparada
para vc mexer nele vc tem que obter a variavel de mesh renderer
vc us um script para automatizar isso
para que a velocidade seja o mais proxima em dispositivos diferentes
usa-se vel*[Link]
cria o arquivo e joqa arquivo no quad e joga o quad dentro vo
campo de variavel do script
PARALLAX SCROLL
scroll que d� nocao de profundidade
tem mais de um objetos cada um em uma velocidade
mas distante, mais lento, mais proximo mais rapido
duplica o quad
e coloca no modo 3d e coloca um um poucos mais na frente q outro
como vc dublica, eles usam o mesmo script a� � s� trocar a velocidade de
cada um
INPUT
INPUT DE TECLADO
[Link]([Link])
s� vai acontecer alguma coisa quano soltar a tecla de seta para
direita
[Link]([Link]) soltando
[Link]([Link]) pressionado
[Link]([Link]) para movimenta�ao de personagem
se vc ficar pressionado d� varias respostas
obs como o script foi adicionado ao objeto nem precisa falar
quem est� movimentando ele j� deduz
INPUT TECLADO 2
ao inv� de usar if
vc usa os Axes
Edit->Project Settings->Input
e vai aparecer v�rios prontos
float H = [Link]("Lados");
float V = [Link]("Vertical");
[Link](new Vector3(H * [Link], V * [Link], 0));
MOUSE INPUT
tem Axes: Mouse X, Mouse Y,MOuse ScrollWheel,
Fire1(mouse 0 ,joystick button 0= botao esq),
Fire2(mouse 1 ,joystick button 1 = botao dir)
pode mudar sensitivy para ficar melhor
INPUT DE JOYSTICK
tem varios tipos de joystick, tem playstation, xbox
tem mapeamentos dos controles na unity os repectivos valores
obs:para vc criar Axes basta aumentar numero de Axes Size
d� para fazer para controles pipiti tbm � s� ir tentando at� acertar o axis
COLIS�ES
COLISORES
para adicionar um � s� clicar em um objeto e add component
pshsics 2d e colider � a linha verde de delimita
mas tem como editar � so ir no edit Collider no proprio obj
tem o edge colider q � uma linha e vc pode ir modelando
praticamente desenhando e s� cliar e puxar e para aumenta s�
clicar nas poontas
polygon collider � legal tbm j� faz automatico
e vc pode modificar
capsule collider costumam usar esse
RIGIDBODY
d� vida a nossos eventos fisicos
tem q add rigidbody2d
linear drag-for�a contra gravidade
tem um check box para simular
gravity scale -for�a da gravidade
constrais-restrinde o movimento
if([Link]([Link]))
[Link](new Vector2(0, forca * [Link]), [Link]);
//usado para dar pulos for�a,se apertar varias vezes ele funciona v�rias
vezes quem q podar isso para dar um pulo, pulo duplo
obs:o inspector � s� para testar depois tem de trocar no script
TAGS
utilizar tags para dzer o que � cada objeto e gerir eventos
para criar tag clique no obj
va na aba inspector e tag->add tag-> +
[Link]("bola")
//nos diz se obj q estamos usando o scrpt � essa tag
COLISOES ENTRE OBJETOS
dessa colisao uma a�ao e desndecadeada
mas para isso os objetos desta a�a tenha uma tag
private void OnCollisionEnter2D(Collision2D outro)
{
//o outro � o bjeto com que houve colisao
if([Link]("madeira"))
//compara a tag do objeto outro
{
//ele ir� destruir
Destroy([Link]);
}
private void OnCollisionExit2D(Collision2D collision)
{
//para quando sai da colisao
}
}
EFEITO PULO
void Update () {
if(duplo>0)
{
if([Link]([Link]))
{
[Link](new Vector2(0, forca * [Link]), [Link]);
duplo--;
}
}
}
void OnCollisionEnter2D(Collision2D outro)
{
if([Link]("chao"))
{
duplo = 2;
//liberarPulo = true;
}
}
TIROS
pegamos o sprint de uma arma
mas como temos q falar onde a bala sai
temos de criar um objeto vazio Create Empty
mas ele fica invisivel se clicarmos fora
entao clicamos nele e vamos no cubo do inspector e
criamos uma especie de rotulo
mas tem o problema da movimentacao da arma e o gameobject da bala
nao acompanha por isso temos de fazer a bala ser filha da arma
� s� jogar o cano ,bala para dentro da arma no hierarchy
public GameObject balas;
public GameObject cano;
if([Link]([Link]))
{
Instantiate(balas, new Vector3([Link].x,
[Link].y, [Link].z), [Link]);
}//instantiate cria objetos
//Quaternion d� para usar mas d� problema quando rot a arma
TRIGGER(gatilhos)
vc cria um gameobject vazio e marca trigger no inspector da� ele nao
nao colidira fisicamente
d� pra acionar armadilhas
[Nao sei como andar e rotacionar ao mesmo tempo, fica fazendo
umas coisas loucas,mas vi em outro videos que nao pode usar nem
translate e rotate tendo um colider]
COLETAR ITENS
para fazer a coleta de itens tbm se usa o trigger
pq vc nao quer que seu personagem colida com ele
//dentro de move Pato
private void OnTriggerEnter2D(Collider2D outro)
{
if([Link]("moeda"))
{
moedas++;
Destroy([Link]);
}
}
AUDIO
PRIMEIROS PASSOS PARA AUDIO
os componentes de audio vem disabilitados pq nao selecionou um gameobj
para colocar esse component
-para vc colocar um audio de fundo tem q estar em um objeto que
estar� em todo o game, a camera seria o ideal
e a camera j� traz isso quando clicamos nela no inspector
vemos o audio listiner que � justamente a orelha do jogador
-vamos colocar uma musica de fundo, clicamos na camera e vamos
no component audio e audiosorce, dai aparece na camera esse
componente pedindo algumas infos
-play awake para tocar ao iniciar o game
-loop para ficar repetindo
prioridade
volume
ptch-velocidade de execu��o da musica
embaixo efeito 3d com gafico de como � executado
-vc nao pode colocar tudo no play awake senao vai ser uma bagun�a
as outras vc vai ter de controlar no c�digo
-vc precisa de uma distancia da fonte de som e das orelhas do jogador
entao se vc deixar na camera vc nao vai conseguir fazer isso, os
dois componentes estao dentro do camera
-no spatiad blend vc pode colocar audio em 2d ou 3d
no 3d vc vai diminiur a intensidade a distacia da camera e a fonte
e vai afetar de qual lado do ouvido vc escuta
se vc colocar no modo 3d da scene vc pode mexer na distancia tbm
ele j� nasce com uma distancia
ENTENDENDO UM POUCO MAIS SOBRE AUDIO
-audio reberv zone
como estamos trabalhando com profundidade � interessante usar
esse efeito
vc pega o arquivo que tem o audio source e adiciona a ele
o audio reberv zone
que tem a op�ao (reverb Preset) que configura, aplica efeitos no som
se nenhuma dessas op�oes agradar vc pode ir em USER
e configurar a sua propria
-Obs(nao achei taooo diferente esse reverb zone, mas talvez
para quem goste deve dar altos efeito principalmente no USER)
dentro do projeto d� para criar um audio Mixer
vai nas pastar botao direito->create->audio mixer
e vc vai colocar ele no OUTPUT do seu audiosorce
e clica na bolinha ao lado, vai aparecer automaticamente o que vc
crou com um nome master ou outro, mas tem o endere�o dele
entao d� para saber se � o mesmo ou n
-vc clica duas vezes no mixer criado e vai abrir para modifica�ao
vc clica em Edit Play Mode
-pode mexer no limiar db
se vc puxar a etiqueta do db no grafico vai aparecer outras op�oes
e dar� para adicionar efeitos
UTILIZANDO AUDIO COM C#
tem v�rios jeitos de se atingir um determinado objetivo
caminho f�cil
pelo teclado ele vai determinar quando vai tocar, parar etc
no exemplo dele o sorce est� na camera
ele deixa desligado o loop e playonawake
fez o codigo
- public AudioSource musica;
if([Link](KeyCode.A))
{
[Link]();
//[Link]();
//[Link]();
}
e joga o codigo para dentro da camera que tem o audiosource
e o arquivo pede o audio source e vc pode jogar a propria camera
no campo
[proximo exemplo-funcional]
abri cena1 para fazer esse exempl
o que �:
fazer o pato encontrar a moeda e criar um gameobjt vazio
que a unica fun�ao � tocar um audio quando nascer
criou um gameobject vazio e criou em cima dele um audio source
e jogou o som de moedas em cima
-ele tem de tranformar ele em prefab, entao vai arrastar ele para
a pasta prefab e aplica, e apaga o objeto da tela
-no script movepato
public GameObject efeitoCoin;
//vai criar o gameobject na posi�ao que o pato colidir com a moeda
private void OnTriggerEnter2D(Collider2D outro)
{
if([Link]("moeda"))
{
Instantiate(efeitoCoin, new Vector3([Link].x,
[Link].y, [Link].z),
[Link]);
moedas++;
Destroy([Link]);
}
}
-depois pega o prefab e joga no gameobject do script
funciona, mas cria um monte de gameobject no jogo, pesando ele
ele pega o prefab e joga na tela e cria um novo script chamado vida
private float tempo = 1.5f;
// Update is called once per frame
void Update () {
tempo -= [Link];
if(tempo<=0)
{
Destroy([Link]);
}
}
}
-depois add o codigo ao prefab AudioPref
aplico e verifico se o arquivo est� nele e deleto ele
GERENCIADOR DE AUDIO
caminho dif�cil
Vamos usar um gerenciador de audio
vai ser o unico gameobject respons�vel por tocar todos arquivos
de som
mas como estarao todos em um arquivinho nao ter� que trabalhar com
profundidade
-entao tem q se fazer que uma instancia seja acessada por qualquer
outro escript de forma est�tica
come�ando
-cria-se um gameobject vazio chamado Audio_G
e um script para ele chamado Gerenciador
no arquivo C# ele apaga as fun�oes Start e Update
ele instancia a classe que est� definindo dentro dele(estranho)
???? nunca vi isso
ele usa tbm um m�todo awake
(diz ele q � melhor q start pq se estiver o c�digo desabilitado
o que estiver dentro de awake roda e de start n)
entendi o que est� dentro dos parenteses
� q tem um checkbox no script,fala para habilitar ou n
ele faz isso para garantir que vai ser feito idenpendente
se o c�digo est� habilitado ou n
o c�digo awake abaixo nos diz que se inst nao estiver referenciando
para o this que � objeto em que vamos colocar o c�digo
� para destroir o obj
public AudioSource sons;
public static Gerenciador inst = null;
private void Awake()
{
if(inst == null)
{
inst = this;
}
else if (inst !=this)
{
Destroy(gameObject);
}
}
//essa segunda parte � para ter acesso a fun�ao
obs:vc pode dar um print (this) para saber o q �
vc passa a informa�ao do arquivo de audio para sons
e toca ele
public void PlayAudio(AudioClip clipAudio)
{
[Link] = clipAudio;
[Link]();
}
++++ vc joga o script gerenciador no object Audio_G e add nel um
audiosource indo em add componente e nao joga nada no audioclip pq
� feito via c�digo
no c�digo de pulosimple ele add
public AudioClip puloSOm;
a� ele chama o instancia para tocar o som
[Link](puloSom);
a� vc joga o audio no scrit acessando bola
e agora tem o barulho do som de pulo
e d� para fazer com v�rios arquivos de audio
muito bom, gerenciador � mara
TRABALHANDO COM F�SICA
DISTANCE joint2D
component-physics2D ->tem todas as articula��es
vai fazer um pendulo com uma bola e uma pilastra
pega os dois e adiciona em cada um rigidbody2d e boxcollider
obs:na coluna precisa de rigidbody n
mas vc poderia colocar e colocar trigger
achor -ancora � a base
vc tbm pode conectar um objeto a um rigid body
a� ele add um rigidbody a pilastra e como ele nao queria que ele
caisse ele determinou q na opcao do rigid body era est�tico em body type
tem op�ao para modificar distancia
um fica na frente do outro bola e pilastra entao � s� ir no
Sprint Renderer do gameobject e modificar na Order in Layer
tem a op�a de deixar rigido ou como uma corda basta marca
apresentada pelo exemplo de bola 90 graus
tem a op�ao de break force tbm que quebra a corda
tem enabl colision para colidir com o objeto
FIXED JOINT2D
efeito de trampolim ou de ponte
no exemplo ele add uma tabua com rigidbody2d e fixedjoint2d
da� tem o
Damping Ratio-� como se fosse o amortecimento, transiente
Frequency -se colocar a ancora na ponta d� para ver que quanto
maior a frequencia mais peso ele guenta
BreakForce de quebra ele vai cair se estiver no ar
Break Torque de quebra
D� para vc ir criando pontes, basta ir duplicando as pontes e adinonar o
novo ao rigidbody anterior, eles ficam ligados a junta inicial
para ficar mais legal d� para vc colocar no ultimo que � static
no bodytype do rigidbody2d para ficar mais bonitinha a ponteS
as do meio ficam meio caidas
e d� para quebrar a ponte colocando a breakforce no meio
FRICTIONPOINT2D
-objetos que vc bate neles e afundam e vai descendo a cada pulo
que vc pula em cima dela e elea gira deacordo com a for�a q vc colo
ca ali
exemplo-ele colocou 2 corpos colisores e rigidbody nos dois objetos q
colocou neles, em um deles ele colocou o frictionjoint,colocou
nos dois
mas em Max Force e Marce Torrque vem 1 nos campos
da� eles caem
mas se vc nao quer q isso aconte�a de forca ou torque
coloque um numero gigante q ele vai colocar o numero maximo
verifique a massa do componente vai afetar
HING JOINT
fazer efeito de corda e corrente
ele colocou uma corrente
adicionou box collider e rigidbody2d e diminuiu a massa para
0.5 eadicionou um hing joint ne;la e conectou o hing joint a uma madeira
ele ancorou os dois pontos juntos e na madeira o da prox
corrente jogou na propria mais em cima e linkou no hingi
d� para quebrar tbm
d� para vc colocar um motor pos neg
limitar angulos legal
tem como colocar um efeito de dobradi�a
tem de diminuir for�a que � pular em cima e ele descer e volatar
a posicao inicial
RELATIVE JOINT
faz q dois objetos fiquem a uma determinada distancia a um deter
minado angulo
cria 2 e coloca em um i relative e jogo o outro como variavel
eles continuam na mesma posica relativa, mesmo empurrando
com mas force abaixando ele volta para a posicao inicial
vai fazer de tudo para conseguir isso, efeito de cataputa,
muito bom,
-com o Corre�ao de Escala ele ti joga para cima tem umas
viagens aqui
SLIDER JOINT
ele faz que um objeto fica deslizando de um lado para o outro de cima
para baixo
objeto vai se mover respeitando essa faixa verde
e tem como mudar o angulo
que nem naquele jogo dandara via scrip muito legal
d� para empurrar, mase chegar no limit nao tem como mais
empurrar
e a ancora � o limite para os dois extremos
?????como ele sabir o nome da variavel
JointMotor2D, ele deduziu?
scrpit
SPRING JOINT@D
ligados meio que q fosse por uma mola
TARGET JOINT@D
especie de mola
nao se conecta com outros gameobj
WHeel JOINT 2D
EFFECTS
AREA EFFECTORS 2D
consegue simular for�a
tipo se o bola atingir aquela �rea ser� empurrada com mais for�a
ele coloca imagens de setas e adiciona box collider,
e ele aumenta a �rea para que possoa refletir o efeito que ele quer
e aciona o Trigger e User by Effector
add nela o area effector
TEm a mask de colisao que diz se a colisao vai servir para todo mundo
se vc colocar a for�a para cima basta mudar ao force angle
90
Force Magnitude � a a intensidade
Force Variation-parecer ais realista
FOrce target pode escolher entre rigibody e Collider
aonde rigidbody n haverr� rotacao
ele adiciona um corpo colisor em um peso e depois um rigidbody
BUOYANCY EFFECTOR 2D
ele cria um cenario
e coloca uma �gua no meio, adiciona nela um colisor
e add um boyancy effector
definiu q vai ser usado como trigger e used by effector
tem op�ao de mask
tem a parte da densidade
a linha verde � aonde os objetos finais ficarao ao cair nelas
a densidade mergulha mais sobre a linha o corpo
linear drag se diminuiir ele arrasta mais rapidamente e o inverso
o resultado inverso se vc colocar muit baixo at� passa vai para o infinito
rs
Se aumentar a surface ele pula,nao d� muito o efeito de �gua
mas para contrabalancear essse aumento vc pode aumentar o linear drag tbm
-Com Flow d� para fazer que a �gua tenha uma correnteza
vc pode colocar varia�ao para ficar o mais proximo do real
se colocar angulo de 180, vai para esquerda
POINT EFFECTOR
d� para simular uma explosao ou gravidade de um planetinha
cria game object vazio e chama de parede, adiciona um colisor nele
e esticou ele, para nao deixar os objetos nao voarem para longe
e colocou um monte de objetos e colocou uma bombinha no meio
com corpo colisor e aumentar o raio do colisor
pq ela ser� a �rea de efeito, impacto
habilitar trigger e used by effector no collider e adcinona o point
effector
a for�a pode ser positiva ou negativa para aproximar e para distanciar objetos
varia�ao d for�a parecer real
Distance Scale para aumentar a distancia de aplica�ao
force source para escolher com qual quer trabalhar
se trab com collider pto de origem no ponto � definado como ponto a
tual do colisor, ou com ponto atual do corpo rigido
PLATAFORM EFFECTOR
ter efeito do superm�rio
super sobre um objeto e sem colidir
vc estava abaixo dele e pula por cima sem colidir e ti mantem
mas tem como mudar o angulo para por cima vazar
e por baixo colidir o que
o que faz funcionar � Use One Way
---------
pregui�a
tem como andar sobre objeto putiagundo sem deslizar, tem de usar
material
tem o bounce de ficar pulando em um component
SURFACE EFFECTOR
uma for�a � aplicada sobre a base
d� para fazer que pule tbm ,suba a montada tanto para direita como esquerda
CONSTANTE FORCE2D
aplica uma forca contante
mastem for�a relativa
aplica torque constante tbm
UI
TEXT
o canvas � como se tivesse algo sobreposto ao visor da camera
dar para alinha colocar cor, feito ,alinhamento
se rich text estuver ativado dar para usar algumas tags de html
se desmarcar rich text vira texto puro
Best Fit � para assumir um tamanho legal
Min Size e Max controla o tamanho da informa�ao internamente
aqueles triangulos vc puxa ele e deixa nas extremidades o
component ui text para prender eles ali
l� no codigo ele coloca
using [Link];
public Text txtMagnet;
void OnTriggerEnter2D(Collider2D outro)
{
if([Link]("Magnet"))
{
magnetItem++;
[Link]=[Link]();
}
}
IMAGE
serve para muita coisa
serve para dizer qual o tipo de objeto comoletado como o desenho de
uma moeda ,colocando uma sprite
-dar para colocar por exemplo colocar a vida de um personagem
pode mexer a tonalidade para chegar em uma cor interessante
-em Image Type vc consegue mexer em alguns apsectos da imagem
como a Sliced, indo l� e colocando bordas pelo sprite editor
se vc usar tiled ele repete
se usar fill e mexer em fill amount d� para fazer aquelas
esferas de vida
codigo
no mesmo c�digo acima
public Image magnetImg;
//dentro de Start
[Link]=0.5f;
RAWIMAGE
diz que � muito legal , d� para fazer v�rias coisas
tem a tal da uv repeat
para exemplificar pegamos um sprite e treocados
texture type para default
e wrap mode para repeat e aplica altera�ao e joga a imagem dentro do
campo de textura da raw image
e vc mechendo a uv react dentro da raw vc tem um efeito de
scroll dentro da UI
nesse exemplo ele cria um codigo para acessar essa imagem e fazer um
scroll
//codigo
public RawImage rIMG;
Rect temp = new Rect ([Link]);
temp.x +=0.1*[Link];
[Link] = temp;
OBS:a RAW IMAGE serve para fazer imagens a partir de seamless
BOTAO 01
o botao em hierarqui ele � um botao e um texto
d� para mexer na transparenia em A em color mas nao
� legal mexer nas configurac�es image
e sim nas de button que tem tudo iss
aonde vc vai mexer nas cores dos estados do botao
em Sprite Swap-vc trocaria de imagens
tem um checkbox que tem preserve aspect ratio
vc pode ir em button no botao e clicar em Auto Generate Animation
e gerar o arquivo de automa�ao
vc clica duas vezes no estado no animator para vc ter acesso ao looptime
no campo On Click � ali q vamos trabalhar com codigo
UI BOTAO 2
no exemplo quando ele clicar no botao vai criar um obj
e se vc clica joga um obj e vc esta no canvas vc pode dar um reset
q j� aparece ni tamanho normal
no onlcik vc clica e mais e arrasta para ele o objeto q tem
o codigo no caso a camera
e vc tem de achar a fun�ao tbm para isso � s� colocar public no c�digo
public GameObject Magnet;
public void EventoBnt()
{
Instantiate(Magnet,new Vector(0,0),[Link])
}
TOGGLE
(caixinhas q pode assinalar tipo checkbox)
tem a animacao dos botoes
Is on- se j� vai marcado
d� para criar uma lista de opcoes
s� q para vc forcar s� escolher apensa um objeto
temos de criar um obj vazio
d� o nome de group e add um componente nele de toogle group
feito isso joga todos os toogle dentro do grupo
todos toogle tem um campo chamado Group
� s� arrastar o objeto de group para dentro dele
a� esta pronto
TOGGLE 02
utilizando c�digos com o toggle
public Text txt;
public Toggle tg;
// Use this for initialization
void Start () {
tg = GetComponent<Toggle>();//pega automatico, n precisa jogar nele o
toggle
}
// Update is called once per frame
public void Toggle1() {
[Link] = [Link]<Text>().text;//label � do tipo text
}
tg nao precisa se preocupar pois j� pega automaticamente
SLIDER
muito ultil para fazer transi�oes de valores predeterminados
d� para falar se ele estara interativo ou n
voce pode definir a dire�ao e sentido
tem como definir valor minimo e m�ximo
tem como dizer se vai mexer apenas com numeros inteiros
se clicar no slider e abri ro background pode-se trocar o fundo,cor
pode-se mexer na bolinha ,cor
SCROLLBAR
usado para manipular imagens, dizer o q vc ver� ou n
podemos mudar a dire�ao
value � a posi�ao dentro dele
mudar size, tamanho
number of steps, sao os estados dentro da barra
tem como trocar a cor ,imagem
cria imagem joga texto nela e add na imagem scroll rect para usar o scroll bar
o conteudo do rect � o texto
vc tem jogar seu ecroll bar na vertical
se vc coloca 1 step fica muito mais suave
mas nao pode deixar esse texto restante a mostra, mas ser� deixado
mais para frente quando se falar de mascara
DROP DOWN
j� sai com imagens, cores ,transi��o, op�oes d� para vc colocar
e tirar op�oes em options pode mexer elas arrastando em option
tem as op�os de objetos internos do dropdown
-obr:com essa op�ao � possivel mostar alguma sprite na tela
paraca cada umas op�oes precisa ter uma
identificacao que sao feitas por um numero que est� no
campo value e ele come�a do zero se tem 3 op�oes
0 1 2
//codigo
public Text txt;
public Dropdown dd;
public void DropTroca()
{
switch ([Link])
{
case 0:
[Link] = [Link];
break;
case 1:
[Link] = [Link];
break;
case 2:
[Link] = [Link];
break;
}
}
depois � s� jogar a image na caption image
INPUT FIELD
para colocar-digitar texto
tem como fazer modifica�oes em imagem cor
e tem duas formas de itvar o codio
quando o valor muda
e depois de quando vc terminou
tem como colocar ele apensa como leitura da� nada aconteceria
no exemplo dele depois dele editar ele vai vai mudar ele para ser
de apenas leitura
PANEL
recurso simples, mas serve para fazer menus bacanas
serve para colocar imagens de fundo
SCROLL VIEW
aonde ficas os botoes das fazes e aonde tem os itens para
pode ser comprados
e � dentro do content que ser� adcionados os objetos que serao
apresentados dentro do scroll view e que vao poder correr da esquerda para
direita de cima para baixo deacordo com as limita�oes q eu vou impor
o contente � como se fosse uma caixa invisivel
moivmento mais usado � o elastic
d� para modificar o valor da elasticidade
OBS:tem como desabilitar o scroll vertical e horizontal colocando none
continua mexendo s� que sem as barras
a� vc podem at� excluir as duas de dentro da scroll vier
vc podendo arrastar com o dedo e tem como desabilitar o tipo
de movimentos horizontal e veticais tbm, pelos check box
mas � mais normal para colocar imagens e botoes , nao costuma usar
codigo aqui
EVENTS
ele coloca uma sprite ,desenho sem nada
e adiciona um event trigger diz ele para manipular a iimagem
e nele vc pode adicionar um event type como
pointer enter, pointer Exit...
umas coisa muito bacana de fazer em unfao vc colocar o proprio obj
da� vc tem acesso as fun�oes base do proprio elemento
ele usou a fun�ao enabad e quando passou o mouse por cima ele desapareceu
e outro foi o set active desaparece tbm
MASCARA E EFEITO
mascara � uma img, vc vai e colore com outra cor d� um efeito de borda
vc coloca o texto como filho da mascara mas vc tem de adicionar um mask a image
e automaticamente o texto ir� sumir
e tem a op�ao de apresentar ou nao o objeto a maskara
ui e effects para criar efeitos
vc da shadowsombra, outline(controle sobre linha de borda)
LAYOUT
vc adiciona um painel e adiciona a ele layout horizontal se
for criar menu horizontal e adciona os botoes como filho
d�i tem opcao de alinhas os filhos e tbm esquerda ,dri, distancia entre
Tudo para alinha direitinho
gridlayout � tudo junto
VIDA ESTILO CORA��O
BARRA DE VIDA
se colocar abaixo na hierarqui ele fica por cima-ordem
TEMPORIZADOR
public float tempo=10.0f;
public Text txt;
public Image img;
void Update () {
if(tempo>0){
tempo -= [Link];
}
else{
tempo=0;
}
[Link] = [Link]("0");//mostra um digito
[Link]=tempo/10;
PO��o
EVENTOS DE ANIMA�AO
para fazer anima�ao do botao basta ir transition colocar animation
vai ter de salvar um arquivo controller
nesse exemplo ele faz aima��o de um botao
vc pode criar um evento em um momento com
botao direito add animation event depois tem de ir ins inspector
para adiconar codigo q vai ser criado eventAnim q ele escreveu
vai tocar e exibir uma menssagem
Nesse exemplo toca um som durante a anima��o
MENU PARA TECLADO E JOYSTCK
nesse exemplo ele quer mexer no menu pelo teclado
visualize server para ver um salto que damos de um
botao para o outro
ao ligar o visualize da para ver umas linhas
No event system
tem um campo chamado firt selected para falar q inicializa selecionado
e colocaremos primeiro botao
tem como dizer com cada seta para onde que vai � o explicit
em navigation do botao
}
ESCLARECENDO DUVIDAS
O UPDATE serve para atualizar o jogo a cada frame, significa que
todo codigo dentro dele vai ser executado a cada frame do jogo
jogo 60 fps vai rodar 60 vezes por segundo
nao � recomendado colocar codigos demorados dentro dele como
de fisica poispode afetar diretamente o nosso fps
FIXEDUPDATE � executado o tempo todo,� sempre executado num tempo
fixo
ex de pulo -> em update tem de ser muito rapido
movimenta�o -. fixed update
TRABALHANDO COM ANIMA��ES
ANIMA��O INTERNA
3 anima�oes
-que d� para fazer dentro da unity
-feita em programa externo(anima�oes de coisas simples, camera, objs)
com programa Spriter 2D(anim�ao d personagens) por causa do uso
dos bones fica mais bonitoS
Voce pode por exemplo substituir o codigo de rota��o
do player com joystick por anima�oes, trocando por ratos pr� definidos.
Deve ser uma vantagem de processamento.
INTRODU��O AO PHOTOSHOP
Janela->tempo de anima��o
ROTACIONANDO MOEDA
cria cilulo, na camada vc clica no botao direito rasterizae
seleciona as duas e clica na ferramenta de movimenta�aoe
clica no segundo desenho de barra para centralizar
USO DA MOEDA NA UNITY
d� para arrastar imagens no animation
e verificar se animator esta marcado
PROGRAMA��O DAS ANIMA��ES
private Animator anim;
// mudar valor de variavel
[Link]( "idle", true );
PROGRAMA��O DAS ANIMA��ES 2
PROGRAMA��O DAS ANIMA��ES 3
PREPARA��O DA ANIMA��O DO VIL�O
C�DIGO DO VIL�O 1
vc coloca um segundo collider para fazer o campo de visao do
inimigo para persegu�-lo
distancia = [Link]([Link], [Link]);
//calcula distancia entre vetores;
if(([Link].x>[Link].x)&&!face)
C�DIGO DO VIL�O 2
ULTIMAS CONSIDERA��ES ANIMA��ES
o tipo de pulo dado n � ideal
d� muiyo erro , por tanto ele faz fun�ao por meio de pergunta a
uma cada se entrou no campo
liberaPulo = [Link]([Link],raio,oqEChao);
ele cria um gameobject vazio chamado check na cena
check � filho do heroi para estarem juntos ele olha entrando na tela
ANIMA��O DE PARTICULAS NO PHOTOSHOP 1
SISTEMAS DE PARTICULAS
SISTEMA DE PARTICULAS
-no Prewarm ela j� come�a apos um ciclo, ou seja a particula
nao vai [Link] j� nao ve o nascimento da particula
por exemplo para fogo e j� estao acesas
-StartDelay � um atraso para iniciar as particulas
-Startlifetime, vai morrer depois de um tempo a particula
consigo a distancia que ela alcan�a
-Startspeed � a velocidade da particula
-3d startsize vc d� um escalonamento nas particulas
-startsize vc aumenta o tamanho das particlas em todos eixos
ao mesmo tempo
- 3dstartrotation contrla a rota�ao, para 2d em z � o interessante
-startrotation como comen�a a angula�ao
-rondomize rotation para randomizar as rota�oes da particula
[num peguei direito]
-startcolor para mudar cor
-gravitymodifier para aflicar efeito de gravidade
como colocar valore baixos para ver efeitos
-simulation space local para ficar fixa como fonte de luz
e world para deixar rastro
-simulationspeed para velocidade de reprodu�ao
do efeito
-play on awake se estiver ativada j� inicia ao abrir ena
-maxpartucle numero de particulas no sitema, se colocar um
aparece uma quando morrer aparece outra legal
-rate overtime � o numero de particulas emitidas por segundo
-shape sa as formas das particulas, o padrao delas
e para ver algumas tem de colocar no 3d para ver
vai ter de rotacionar para ver
e para cada uma delas tem configura�oes espec�ficas
obs:cone geralmente � a mais utilizada
-emitefrom de onde as particulas sao emitidas
VELOCITY OVER LIFE TIME + LIMIT VELOCITY OVER LIFE TIME
-velocity over Lifetime permite que vc controe a velocidade da
particula al�m de sua vida �til
tem que abilitar e d� para fazer os ajustes pelos eixos
vc nao � obrigado trabalhar com elas diretamente se clicar do
lado vc pode criar curvas
pode tbm random between vc vc coloca dois valores para randomizar
-limit velocity over lifetime como a velocidade das particulas
sao reduzidas a partir da vida �til
[nao entendi direito]
-inherit velocity como a velocity reagi em rala�ao ao objeto de
objeto pai por exemplo em cima de uma fuma�a de trem que est�
movimentando
-mods :initial vai aplica uma vez a cada vez que a particula nasce
:current vai ser aplicadas a cada particula a cada quadro
tem o multipler � a propor�ao da velocidade do pai que deve herdar
ele faz exemplo de carro colocando o valo negativo
current � estranho
initial � mais natural
FORCE OVER TIME
aplica uma for�a nas farticulas em x,y,z, com curcvas,betwwen
local ou global e tem randomize
precisa usar ramdons para poder habilitar ramdomize
tem o dumping que limita o valor � reduzir
COLOR OVER LIFETIME
cor inicial e final d� para usar between de dois gradientes
d� para trabalhar nas paletras transiente e alphas que fica na parte de cima
COLOR by SPEED
a cor da partila pode ser ajustada deacordo com sua velocidade � intere
ssante vc usar com force over lifetime fica um efeito mto bacana
SIZE OVER LIFETIME
muda o tamanho da particula com auxilio de curvas
vc vai usar uma curva s�
se vc habilitar separete axis vai ter 3 curvas
d� para mudar o tamanho inicial l� em cima
SIZE by SPEED
� legal
d� para diminuir nos eixos
ROTATION OVER LIFETIME + ROTATION BY SPEED
vc mexe em z e elas rotacionam, d� para fazer nos outros eixos
bem interessante
ROTATION BY SPEED
NOISE
d� um visual legal
COLISION
vamos conseguir adicionar colisao as nossas particulas
colision vamos usar 2d
dampen � quando de energia vai perder apos colisao
bounce tipo de pulo que afeta particulas
lifetime loss- perda do lifetime
radiusscale para tamanhos dos limites do collider
collides With com quem vai se colidir
TEXTURE SHEET ANIMATION
d� para colocar anima�ao a particula
tile � a posi�ao dela
frame over Time � como os frames aumenta a medida que
o tempo avan�a
tem o flip u e v
se escolher single row , vai ter mais op�oes
tem random row escolhe linha de a�ao aleatoria
row escolhe linha especifica
em renderer tem o material aonde tem a bolinha
para tocar vc precisa criar um nova material a�
vc puxa os sprites para dentro do quadradinho albedo que
� uma op�ao do material, depois � s� pegar o material
e soltar em material em renderers
mas vc depois de fazer isso tem de ajurar ir no material e tracar
shader para uns das particulas
no caso ele usou particles/addctive(soft)
mas vc precisa ir em renderer e colocar o tile x, para o numero
de colunas e y numero de linhas, mas tem hora que fica sem nada
-teria que modificar imagem para figura, fazer em linha
cycle � o numero de ciclos antes e morrer
LIGTS
� pesado usado mais para console
light � um prefab, tem de criar jogar na cena e jogar em light
ratio � a taxa que vai ter ilumina�ao
random � ramdomico aleatorio ou periodicamente
Use Particle Color a cor final da luz sera modulada
pela cor da particula
Maximum Light, numero maximo de luzes
exemplo: ele cria um material sendo o shader Sprite/Diffisu
e colocou a luz dentro dele
cria gameobj/light point e joga la no campo e ja ilumina o asteroid
TRAILS
efeitos de trilhas
em trail tem como colocar um material,em renderer - trail material
ratio-porpor�ao de particluas que tem trilha [0,1]
Texture modo- tile -e um monte de trancejada a outra op�ao � a esticada
die with particles morre com as particulas- para efeitos de impacto
Inherit particle color, faz a trilha ter a mesma cor da particula
color over lifetime d� para fazer altera�ao na co dos rastro
width over trail, mexe na largura do rastro
EXEMPLO MANDALA
se vc coloca statspeed igual a zero d� para ver, o aspecto se
est� ficando e legal e talz
Ele colocou o sistema de particlas mobile ,mas quando colocou um
fundo perdeu-se o brilho e ele voltou para normale voltou
o aspecto brilhoso bonito
com o render mode d� para fazer envelopes de cubo esfera, coisas
muito legais
EXEMPLO CAVEIRA
criou material e adicionou caveira nele
shader anim alpha blended escolhidp
EXEMPLO DE EXPLOSAO
para fazer explosao tem que ir em emission e ir em burst
e usar zero em rate over time
ele adiciona um sub emitter
ele cria outro sistema de particulas
e coloca para ser filho do anterior
vc pega o segundo e joga no sub emttires da outra
3D + 2D
APRESENTACAO DOS SOFTWARES DE MODELAGEM 3D
-tem como add obts 3d
-tem de lembrar de colocar a luz
programs de modelagem
-wings3d
-blender
-sketchUp(pago) diz ser bem mais facil modelar
WINGS 3D
SCKETCHUP
BLENDER 01
BLENDER 02
2D + 3D
tem duas formas de misturar 3d com 2d forma facil e complexa
facil objetos 2d na frente objetos 3d atras para dar um efeito de profundidade
mais realistas possiveis
dificil- a mecanica deles acontece em 3d eles realmente misturam tudo
teve de passar objetos 2d com propriedades 3d, como rigidbody e
collider
ou seja o visual � 2d mas a mecanica � 3d
sombra � projetado a partir de objetos j� vem por padrao
� s� vc importar effects
botao direito sobre asset-import package e effects- e ir em projetors
AULA EXTRA DE ANIMACAO
mostra transi�ao entre anima�ao de andar e correr
e mostra codigo
SPRITEMASK
efeito de transi�ao legal
imagem so apare dentrou ou fora da imagem estrela por exemplo
TileMAP
2d objct-tilemap
window tile pallete
meio q vc pinta o seu cenario 2d, muito pratico
para jogos run simples
tilemap collider 2d
PROJETO ANGRY BIRDS-------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ATUALIZANDO A UNITY
POSSO TER VERSOES DIFERENTES DA UNITY
Pode sim, s� num � acomselhavel trocar durante o projeto
e vc deve instalar em outra pasta, senao vc perde suas coisas fic
sobreescrito
BAIXAR E PREPARAR OS ASSETS
OBS:se vc quiser cortar um peda�o da imagem como a parte tranparente no
sprite va em edtor spriter e multiply e corte
UNITY REMOTE
� mais rapido para entrar em primeiro plano, mas � mais para
verificar toque e acelerometro
em resumo, � ruim para verdadeiramente saber se est� legal
fica muito lento
tem na googleplay
INPUT TOUCH PHASE
para saber se tem toque na tela
using [Link];
public Text txt;
public Touch toque;
void Update(){
if([Link]>0)
{
toque =[Link](0);
switch([Link])
{
case [Link]:
[Link]="Began";
break;
case [Link]:
[Link]="Ended";
break;
case [Link]:
[Link]="Moved";
break;
case [Link]:
[Link]="Stationary";
break;
case [Link]:
[Link]="Canceled";
break;
}
}
}
INPUT TOUCH COUNT
//fala o numero de toques ao mesmo tempo
if([Link]>0)
{
[Link]=[Link]();
}
INPUT TOUCH POSITION
if([Link]>0)
{
toque=[Link](0);
if([Link]==[Link])
{
if([Link].x>([Link]/2))
{
[Link]="Direita";
}else{
[Link]=�squerda";
}
}
}
Input Accelerometer
[Link]([Link].x,[Link].y,0)
Line Render
Effects->Line render
cria o gameobject
e add componente effect line render
ele uni , cria uma linha entre objets
d� para colocar varias unioes
mexer no tamanho da curva
se ir em color d� para fazer aqueles efeitos
d� para criar suavizar curvas
colocar uma cabe�a mais arredondada nela
e tem outras op�oes l�
tem curva que da para mexer
Line Render 2
ele pega o primeiro ponto p1 onde est� o line render e joga o c�digo
na cena tem outros 2 ptos
public Transform p2,p3;
[Link]<lineRenderer>().SetPosition(0,[Link]);
[Link]<lineRenderer>().SetPosition(1,[Link]);
[Link]<lineRenderer>().SetPosition(2,[Link]);
DRAG AND DROP
dentri de rigidbody se vc for em rigidbody vc pode ir em body type
e colocar kinematic e o objeto fica parado sem cair
se vc colocar [Serializefield] vc enxerga a vari�vel
OBS:Aprender RAYCAST voltarrrr
EFEITO ESTILINGUE
Pressionando v, e arrastando o objeto no vertice ele alinha automaticamente
com outro gameobject
tem como vc adicionar um layer em Sorting Layer
mas acabou que ele usou s� o order layer mesmo
tem como vc adicionar em cada ponto o material que vc quer colocar
nao entendi direito, tentar [Link] verdade nao
ele tem 2 LineRender
public LineRenderer lineFront;
public LineRenderer lineBack;
void SetupLine()
{
[Link](0,[Link]);
[Link](0,[Link]);
}
ele fez um ajuste manual no ambiente 3D jogando para frente a catapulta
tem o problema do pivot que fica no centro do pato e precisa
abra�ar o pato
EFEITO ESTILINGUE 02
private Ray leftCatapultRay;
private CircleCollider2D passaroCol;
private Vector2 catapultToBird;
private Vector3 point;
void Start(){
leftCatapultRay=new Ray ([Link],[Link]);
}
//como pegar uma dire��o
catapultToBird=[Link];
[Link]=catapultToBird;
para passar l� no public basta jogar os objetos com o linerenderer
dentro do spa�o
void LineUpdate()
{
catapultToBird=[Link];
[Link]=catapultToBird;
pointL=[Link]([Link]+[Link]);
//GetPoint returns a point at distance units along the ray;
[Link](1,pointL);
[Link](1,pointL);
}
EFEITO ESTILINGUE 03
para a fisica
ele adiciona o spring joint 2d
ele conecta o rigidboy do catapultBack ao joint
private SpringJoint2D spring;
private Vector2 prevVel;
private Rigidbody2D passaroRB;
void Start(){
spring=GetCOmponent<SpringJoint2D>();
passaroRB = GetComponent<Rigidbody2D>();
}
[Link]=false;
void SpringEffect()
{
if(spring != null)
{
if([Link]==false)
{
//sqrMaginitude � o retorno do raiz quadrado de um vetor
if([Link]>[Link])
{
[Link]=false;
[Link]=false;
Destroy(spring);//para nao ficar aquele vai e volta da mola
[Link]=prevVel;
}
}
}
}
CAMERA QUE SEGUE
[SerializeField]
void Update(){
Vector3 posCam = [Link];
posCam.x=[Link].x;
posCam.x=[Link](posCam.x,[Link].x,[Link].x);
[Link]=posCam;
}
MORTE PASSARO
//ele coloca a morte dele de acordo com uma velocidade,por exemplo 0.5
void MataPassaro()
{
if([Link]<0.5f)
{
StartCoroutine(TempoMorte());
}
}
IEnumerator TempoMorte()
{
yield return new WaitForSeconds(3);//espera 3 segunds para morrer
Destroy (gameobject);
}
//o que � esse IEnumerator?parece ser uma subroutine
PARTICULAS MORTE PASSARO