You are on page 1of 27

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


//transform.Translate(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
//transform.Rotate(new Vector3(0, 0, 0.5f));
//transform.localScale += new Vector3(0.1f, 0.1f, 0);

essa daqui resolve


transform.Translate(new Vector3(0.03f, 0, 0),Space.World);

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*Time.deltatime
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
Input.GetKeyUP(KeyCode.RightArrow)
s� vai acontecer alguma coisa quano soltar a tecla de seta para
direita

Input.GetKeyUp(KeyCode.RightArrow) soltando
Input.GetKeyDown(KeyCode.RightArrow) pressionado
Input.GetKey(KeyCode.RightArrow) 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 = Input.GetAxis("Lados");
float V = Input.GetAxis("Vertical");
transform.Translate(new Vector3(H * Time.deltaTime, V * Time.deltaTime, 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(Input.GetKeyDown(KeyCode.Space))
bola.AddForce(new Vector2(0, forca * Time.deltaTime), ForceMode2D.Impulse);
//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-> +

this.gameObject.CompareTag("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(outro.gameObject.CompareTag("madeira"))
//compara a tag do objeto outro
{
//ele ir� destruir
Destroy(outro.gameObject);
}

private void OnCollisionExit2D(Collision2D collision)


{
//para quando sai da colisao
}
}
EFEITO PULO

void Update () {
if(duplo>0)
{
if(Input.GetKeyDown(KeyCode.Space))
{
bola.AddRelativeForce(new Vector2(0, forca * Time.deltaTime), ForceMode2D.Impulse);
duplo--;
}
}
}

void OnCollisionEnter2D(Collision2D outro)


{
if(outro.gameObject.CompareTag("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(Input.GetKeyDown(KeyCode.Space))
{
Instantiate(balas, new Vector3(cano.transform.position.x,
cano.transform.position.y, cano.transform.position.z), Quaternion.identity);
}//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(outro.gameObject.CompareTag("moeda"))
{
moedas++;
Destroy(outro.gameObject);
}
}

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(Input.GetKeyDown(KeyCode.A))
{
musica.Play();
//musica.Stop();
//musica.Pause();
}

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(outro.gameObject.CompareTag("moeda"))
{
Instantiate(efeitoCoin, new Vector3(this.gameObject.transform.position.x,
this.gameObject.transform.position.y, this.gameObject.transform.position.z),
Quaternion.identity);
moedas++;
Destroy(outro.gameObject);
}
}

-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 -= Time.deltaTime;
if(tempo<=0)
{
Destroy(this.gameObject);
}
}
}

-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)


{
sons.clip = clipAudio;
sons.Play();
}

++++ 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

Gerenciador.inst.PlayAudio(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 UnityEngine.UI;

public Text txtMagnet;

void OnTriggerEnter2D(Collider2D outro)


{
if(outro.gameObject.CompareTag("Magnet"))
{
magnetItem++;
txtMagnet.text=magnetItem.ToString();
}
}

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
magnetImg.fillAmount=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 (rImg.uvRect);


temp.x +=0.1*Time.deltaTime;
rImg.uvRect = 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),Quaternion.identity)
}

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() {
txt.text = tg.GetComponentInChildren<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 (dd.value)
{
case 0:
txt.text = dd.captionText.text;
break;
case 1:
txt.text = dd.captionText.text;
break;
case 2:
txt.text = dd.captionText.text;
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 -= Time.deltaTime;
}
else{
tempo=0;
}

txt.text = tempo.ToString("0");//mostra um digito


img.fillAmount=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
anim.SetBool( "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 = Vector2.Distance(this.transform.position, Hero.transform.position);
//calcula distancia entre vetores;
if((Hero.transform.position.x>this.transform.position.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 = Physics2D.OverlapCircle(check.position,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 crescer.vc 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 UnityEngine.UI;

public Text txt;


public Touch toque;

void Update(){

if(Input.touchCount>0)
{
toque =Input.GetTouch(0);

switch(toque.phase)
{
case TouchPhase.Began:
txt.text="Began";
break;
case TouchPhase.Ended:
txt.text="Ended";
break;
case TouchPhase.Moved:
txt.text="Moved";
break;
case TouchPhase.Stationary:
txt.text="Stationary";
break;
case TouchPhase.Canceled:
txt.text="Canceled";
break;
}
}
}

INPUT TOUCH COUNT

//fala o numero de toques ao mesmo tempo


if(Input.touchCount>0)
{
txt.text=Input.touchCount.ToString();
}

INPUT TOUCH POSITION

if(Input.touchCount>0)
{
toque=Input.GetTouch(0);

if(toque.phase==TouchPhase.Began)
{
if(toque.position.x>(Screen.width/2))
{
txt.text="Direita";
}else{
txt.text=�squerda";
}
}
}

Input Accelerometer

transform.Translate(Input.acceleration.x,Input.acceleration.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;


gameObject.GetComponent<lineRenderer>().SetPosition(0,transform.position);
gameObject.GetComponent<lineRenderer>().SetPosition(1,p2.transform.position);
gameObject.GetComponent<lineRenderer>().SetPosition(2,p3.transform.position);

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 emular.Na verdade nao
ele tem 2 LineRender

public LineRenderer lineFront;


public LineRenderer lineBack;

void SetupLine()
{
lineFront.SetPosition(0,lineFront.transform.position);
lineFront.SetPosition(0,lineBack.transform.position);
}

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 (lineFront.transform.position,Vector3.zero);
}

//como pegar uma dire��o

catapultToBird=transform.position-lineFront.transform.position;
leftCatapultRay.direction=catapultToBird;
para passar l� no public basta jogar os objetos com o linerenderer
dentro do spa�o

void LineUpdate()
{
catapultToBird=transform.position-lineFront.transform.position;
leftCatapultRay.direction=catapultToBird;

pointL=leftCatapultRay.GetPoint(catapultToBird.magnitude+passaroCol.radius);
//GetPoint returns a point at distance units along the ray;
lineFront.SetPosition(1,pointL);
lineback.SetPosition(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>();
}

passaroRB.isKinematic=false;

void SpringEffect()
{
if(spring != null)
{
if(passaroRB.isKinematic==false)
{
//sqrMaginitude � o retorno do raiz quadrado de um vetor
if(prevVel.sqrMagnitude>passaroRB.velocity.sqrMagnitude)
{
lineFront.enable=false;
lineBack.enable=false;
Destroy(spring);//para nao ficar aquele vai e volta da mola
passaroRB.velocity=prevVel;
}

}
}
}

CAMERA QUE SEGUE

[SerializeField]

void Update(){
Vector3 posCam = transform.position;
posCam.x=passaro.position.x;
posCam.x=Mathf.Clamp(posCam.x,objE.position.x,objD.position.x);
transform.position=posCam;

}
MORTE PASSARO

//ele coloca a morte dele de acordo com uma velocidade,por exemplo 0.5
void MataPassaro()
{
if(passaroRB.velocity.magnitude<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

You might also like