SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Como ativa ou desativar o botão usando outro botão
Não consigo mais abrir projeto nenhum na Unity!
Dúvida sobre Instanciate
como desativar um script usando botão na unity
como fazer botão simular uma tecla do teclado para jogos android unity
Clonar partícula na cena.
Preciso de ajuda com GetMouseButton para dar play em audio
TRIGGER DE ANIMAÇÃO
Otimização
[RESOLVIDO] Rotação de um gameobject sem que os filhos se alterem?
Trigger Raio e Trovão
Não consigo desativar script de gameObject (C#)
posso divulgar o fórum em meu site?
Alguém poderia mudar esse script pra botão
Como desativar e habilitar o Skinned MeshRenderer?
Como transformar um vídeo em espaço editável na Unity?
[TUTORIAL] Inimigo seguir e atacar Player ao encostar
Trocar Personagem/Skin
Como faz para o jogo rodar mesmo quando minimizado?
Alguem poderia me ajudar com combo 2d?
Jogador pode escolher que tipo de pos processamento usar nas configurações?
Como se faz um sistema de combo pra mobile
Como fazer com que collider detecte colisao de objeto especifico?
Problema mudar de sprite sempre que seja adicionado um novo sprite a lista
Colocar video no unity
Imagem excedendo o limite da tela. Como resolver?
Erro no Android
Como abrir uma empresa de games?
Informação Importante sobre o Edge Collider 2D
Como consigo aquele efeito de lanterna imagem abaixo
Como posso usar a função OnClick nesse script
[TUTORIAL] Como carregar uma cena em segundo plano?
[Tutorial] Sistema de Combos (Mobile e PC)
Personagem sofre dando e continua de onde parou com condição.
Como Abrir Porta do Carro (Capo,PortaMalas, Portas) Mirando Nelas
[RESOLVIDO] Várias faixas de música
[RESOLVIDO] int Random.Range(int min, int max) para geração procedural ?
Como fazer o som funcionar de acordo com a velocidade do objeto
Alto falante Vibrar
[RESOLVIDO] Luz no interior
[TUTORIAL] Como Fazer com que as Luzes Iluminem apenas o que você deseja
Traduções e Dublagens de games
[RESOLVIDO] Cono mudar a Tag por script?
[RESOLVIDO] Qualidade do sprite - Compression
[TUTORIAL] Unity 3D - AnimationCurve
[RESOLVIDO] Partículas com imagem
[RESOLVIDO] DUVIDA SOBRE ATIVAR UM GAMEOBJECT ATRAVÉS DE UMA CONDIÇÃO
NavMesh não consegue reproduzir sprits de um jogador
NavMesh não faz animação do jogador
Bom dia amigos compro assets do meu interesse!
Criar Ranking Online
[TUTORIAL] ScrollView rapida e facil de fazer
colocar imagem no fórum
Unity ou Game Maker Studio
[TUTORIAL] Tocar audios de uma lista em uma sequência que se repete
Error CS0246, não sei o que fazer
Como faço pra um colisor não reconhecer outro colisor sem usar IsTrigger
[RESOLVIDO] Alteração de nomes e rastreamento das mudanças
Som unity
CHAVE DE ASSINATURA
[TUTORIAL]identificar se está no controle ou teclado
[TUTORIAL] Sistema de fome, sede, barra de vida, barra de estamina, itens e dano por queda
Não estou conseguindo ativar o evento do onClick após instanciar o botão
Exportar Modelo 3D da Unity
Duvida sobre Spawn
Dúvida sobre volatile
[UE4] Por favor me digam como me livrar do motion blur!
[RESOLVIDO] Float to transform
[RESOLVIDO] mudar a cor quando a personagem passa
Como ativar um 'Panel'
Como faço pra desligar e ligar outro text?
Como Faço Para Ativar/Desativar Material Por Script ?
como modificar o script para receber e registar o dano no personagem
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Meu personagem está tomando repulsão da parede
Problemas com IEnumerator
Meu personagem ta tremendo quando toca em alguma coisa
[TUTORIAL] Como criar tiro no Unity usando Raycast
Scripts travados
Como faço para mudar a posição de um objeto para perto de outro.
Alteração de personagens durante o jogo // parte 2
Como se faz uma grid, apenas e somente uma grid em 3D?
meu primeiro jogo pronto
quero corverter uma int em string
Como mudar a posição de um objeto constantemente sem estar na void Update
Como conseguir fazer para minha moto dar grau
[RESOLVIDO] Alteração de personagens durante o jogo
Como fazer um retrovisor leve para android?
Preciso de um script para andar de moto alguem consegue me ajudar
Como consigo fazer esse efeito de escurecer o ambiente ao atacar?
Como fazer pra selecionar um inimigo pra atacar de varios unity 2d
Setparent Photon
duvida em sistema de Horror de como pegar e solta objeto
[UE4] Como fazer cutscene com o próprio personagem?
Plataforma Flutuante
OS Tycoon (DEVLOG) - Crie seu próprio sistema operacional
[RESOLVIDO] Grande X vermelho
Como desativo o vsync em projeto para celular?
Como fazer uma compra aleatoria em uma cena
Hoje à(s) 11:00 am
Hoje à(s) 9:09 am
Hoje à(s) 1:11 am
Ontem à(s) 4:27 pm
Ontem à(s) 2:32 pm
Ontem à(s) 2:25 pm
Ontem à(s) 12:41 pm
Ontem à(s) 10:12 am
Ontem à(s) 9:47 am
Ontem à(s) 3:34 am
Ontem à(s) 1:06 am
Qui Jan 21, 2021 10:59 pm
Qui Jan 21, 2021 9:25 pm
Qui Jan 21, 2021 7:56 pm
Qui Jan 21, 2021 5:11 pm
Qui Jan 21, 2021 3:47 pm
Qui Jan 21, 2021 11:17 am
Qui Jan 21, 2021 10:45 am
Qui Jan 21, 2021 9:54 am
Qua Jan 20, 2021 11:55 pm
Qua Jan 20, 2021 11:53 pm
Qua Jan 20, 2021 11:07 pm
Qua Jan 20, 2021 9:52 pm
Qua Jan 20, 2021 5:29 pm
Qua Jan 20, 2021 4:58 pm
Qua Jan 20, 2021 3:56 pm
Qua Jan 20, 2021 3:53 pm
Qua Jan 20, 2021 9:26 am
Ter Jan 19, 2021 10:30 pm
Ter Jan 19, 2021 8:28 pm
Ter Jan 19, 2021 4:48 pm
Ter Jan 19, 2021 6:49 am
Seg Jan 18, 2021 11:39 pm
Seg Jan 18, 2021 9:31 pm
Seg Jan 18, 2021 10:47 am
Seg Jan 18, 2021 10:34 am
Dom Jan 17, 2021 10:54 pm
Dom Jan 17, 2021 6:28 pm
Dom Jan 17, 2021 2:07 pm
Dom Jan 17, 2021 12:21 pm
Dom Jan 17, 2021 11:19 am
Dom Jan 17, 2021 11:17 am
Dom Jan 17, 2021 11:15 am
Dom Jan 17, 2021 1:44 am
Sab Jan 16, 2021 6:40 pm
Sab Jan 16, 2021 11:43 am
Sab Jan 16, 2021 11:12 am
Sex Jan 15, 2021 8:20 pm
Sex Jan 15, 2021 1:39 am
Qui Jan 14, 2021 9:53 pm
Qui Jan 14, 2021 7:44 pm
Qui Jan 14, 2021 5:35 pm
Qui Jan 14, 2021 3:55 pm
Qui Jan 14, 2021 2:07 pm
Qui Jan 14, 2021 1:51 pm
Qui Jan 14, 2021 12:56 pm
Qua Jan 13, 2021 6:57 pm
Qua Jan 13, 2021 2:45 pm
Ter Jan 12, 2021 11:14 pm
Ter Jan 12, 2021 8:14 pm
Ter Jan 12, 2021 3:16 pm
Seg Jan 11, 2021 6:26 pm
Seg Jan 11, 2021 5:55 pm
Seg Jan 11, 2021 10:51 am
Dom Jan 10, 2021 7:18 pm
Dom Jan 10, 2021 6:21 pm
Dom Jan 10, 2021 3:24 pm
Dom Jan 10, 2021 2:31 pm
Dom Jan 10, 2021 2:29 pm
Dom Jan 10, 2021 10:44 am
Sab Jan 09, 2021 9:30 pm
Sex Jan 08, 2021 9:14 am
Sex Jan 08, 2021 7:07 am
Sex Jan 08, 2021 1:02 am
Sex Jan 08, 2021 12:33 am
Qui Jan 07, 2021 7:31 pm
Qui Jan 07, 2021 5:31 pm
Qui Jan 07, 2021 3:51 pm
Qui Jan 07, 2021 3:49 pm
Qui Jan 07, 2021 12:12 am
Qua Jan 06, 2021 7:40 pm
Qua Jan 06, 2021 4:57 pm
Qua Jan 06, 2021 7:36 am
Ter Jan 05, 2021 5:29 pm
Ter Jan 05, 2021 1:58 pm
Ter Jan 05, 2021 10:35 am
Ter Jan 05, 2021 5:22 am
Ter Jan 05, 2021 1:00 am
Ter Jan 05, 2021 12:02 am
Seg Jan 04, 2021 4:33 pm
Seg Jan 04, 2021 3:24 pm
Seg Jan 04, 2021 3:15 pm
Seg Jan 04, 2021 2:23 pm
Seg Jan 04, 2021 2:06 pm
Seg Jan 04, 2021 8:56 am
Dom Jan 03, 2021 8:18 pm
Dom Jan 03, 2021 9:48 am
Dom Jan 03, 2021 4:14 am
Sab Jan 02, 2021 10:11 pm
Vans 123
sopturn
Pokedlg
Vans 123
SauloeArthur
Pokedlg
Charlesoff
Pokedlg
Fagner
ADSK
Pokedlg
wooZbr
SauloeArthur
Pokedlg
Pokedlg
dutrabr100
SauloeArthur
dutrabr100
NKKF
dutrabr100
dutrabr100
Pokedlg
SamoelBanner
Pokedlg
SauloeArthur
NKKF
orph
dutrabr100
acefogo
Fagner
Vans 123
amoraleite
Pokedlg
acefogo
dutrabr100
Pokedlg
dutrabr100
Pokedlg
savtoi
dragongirl
dutrabr100
Rangel Oblivion
dutrabr100
JoelMJunior
MarcosSchultz
dragongirl
dutrabr100
Ren Allen
Ren Allen
LucasGamerFx
SauloeArthur
NKKF
dutrabr100
SauloeArthur
Pokedlg
SauloeArthur
dutrabr100
Alexandre Santos
Pokedlg
starfreddybou69
diegopds
Super
dutrabr100
TIKO
dutrabr100
SauloeArthur
lesgoy
Fagner
Pokedlg
dutrabr100
Pokedlg
SauloeArthur
redPRO
glauco
Op3000
Pokedlg
JulioWinchester
SauloeArthur
SauloeArthur
Leozitu
Ren Allen
speedluk
SauloeArthur
BatataBugada54321
Pokedlg
Pokedlg
Ren Allen
Fagner
123
Pokedlg
macinhadeborracha
MRX
giowde
lesgoy
TIKO
Micco
Leonardo André
lesgoy
Moskeiro

[TUTORIAL] Criando Plants Vs Zombies - parte 2

Ir em baixo

TUTORIAL [TUTORIAL] Criando Plants Vs Zombies - parte 2

Mensagem por MayLeone em Qua Maio 30, 2018 5:42 pm

[TUTORIAL] Criando Plants Vs Zombies - parte 2  866c6790c7ffa6d5e6ad895d460af7cf


Clique aqui para ver a parte 1 do tutorial!


Olá, como vão? Nessa segunda parte do tutorial nós iremos desenvolver o nosso zombie do projeto, o inimigo principal do jogo original, então vamos lá?

Iniciando:
Primeiramente traga o sprite do zombie para a cena (através de "Assets" >>  "Sprites PvZ >> Zombies) e coloque o nome desse objeto de "Zombie", agora na janela de assets na pasta de sprites, selecione todos os sprites do zombie (CTRL+A) e vamos aumentar sua resolução na Unity, mudando seus pixels de 100 para 70:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B1

Aplique a alteração.

Agora volte ao sprite em cena e nele adicione um Rigidbody2D (deixe a escala de gravidade em 0).
Adicione também um box collider2D com a opção "IsTrigger" marcada, e ajeite a colisão de forma que seja da cintura para baixo, desconsiderando a cabeça, já que ela vai ficar em outra parte da grama (o zombie ocupa duas gramas ao mesmo tempo) e para não ser detectado em ambas, sua colisão só ocorre da cintura para baixo:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B6


Dando CTRL+6  você poderá criar as animações para o objeto.
Para adicionar a animação, crie uma nova com o nome de "ZombieWalking" e traga com o CTRL+A todos os sprites da pasta, deixando o "Samples" em 10:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B2


Agora crie uma nova animação com o nome de "ZombieAttack" e adicione os sprites da imagem abaixo (para fazer a animação do Zombie comendo):


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B3



Como não temos as animações do Zombie comendo vamos improvisar!
Deixe o "Samples" em 10 também e feche essa janela.

Agora abra o Animator desse objeto e vamos fazer as transições de animações.
Crie um parâmetro booleano com o nome de "isEating":


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B4


Agora faça a transição de "ZombieWalking" para "ZombieAttack" com a condição do parâmetro "isEating" em true (não se esqueça de desmarcar a opção "Has Exit Time").
Faça o mesmo caminho de retorno de "ZombieAttack" para "ZombieWalking" só que agora com a condição "isEating" em false:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B5


Feche essa janela porque as animações estão configuradas corretamente agora.

Adicione um AudioSource no zombie e nele coloque o áudio "Eating" que é do zombie comendo, e desmarque a opção "Play on Awake" e marque a opção "Loop":


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B7


Todos os componentes do zombie estão aplicados devidamente a ele, falta-nos o seu script:

Movimentando o Zombie:
Agora vamos até a pasta "Scripts" criaremos um C# script chamado "ZombieScript" para esse objeto.
O zombie no jogo possui 3 comportamentos distintos: Andar, comer a planta e morrer, portanto, podemos desenvolver esses três comportamentos nesse mesmo script.
Vamos iniciar com a criação das variáveis: Crie duas variáveis públicas do tipo "float" uma chamada "vel" que vai controlar a velocidade do zombie, e a outra chamada "zombieLife" que vai controlar a sua vida.
Também crie duas variáveis booleanas privadas: Uma chamada "canWalk" que vai gerenciar quando o zombie vai poder andar e uma chamada "canHit" que vai controlar quando ele vai poder comer a planta.
Também vamos precisar de uma variável do tipo "int" chamada "layer" para podermos controlar o layer das plantas na hora da detecção das mesmas, e variáveis do tipo "Rigidbody2D", "Animator" e "AudioSource" para controlar tais componentes.
Dentro do método Start faça com que canHit receba true, "layer" receba o layer chamado "Plants" e com que as variáveis de componentes "AudioSource" e etc recebam seus respectivos componentes:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B9



Vá até a pasta "Prefabs", selecione as quatro plantas e crie um novo layer chamado "Plants" e coloque-as nesse layer:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B10

Volte ao script do Zombie.
Defina o método "FixedUpdate" e dentro dela iremos gerenciar se o zombie pode andar ou não.
Caso a variável "canWalk" estiver true, nós iremos adicionar uma velocidade ao seu corpo rígido no eixo X, essa velocidade seria a variável "vel" multiplicada por Time.deltaTime, e caso essa variável estiver false, iremos fazer com que a velocidade volte a ficar zero nos dois eixos (o zombie parará), atribuindo o Vector2.zero:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B11


O valor de "vel" dentro do Vector2 está negativo porque o zombie se movimenta da direita para esquerda, ou seja, sempre indo para a esquerda, logo, esse valor deve ser negativo, pois se fosse positivo ele iria se movimentar sempre para a direita.
Salve o script (CTRL+S).
Agora selecione o objeto do zombie e através do inspector altere as variáveis de velocidade e vida.
Como esse é o zombie padrão do jogo, eu deixei ele numa velocidade de 6 e a vida em 10, porém conforme você crie outros zombies durante o seu projeto, você pode ir alterando esses valores (deixando os zombies mais resistentes e até mais rápidos).
Também relacione o AudioSource na variável "sound":


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B12


Detectando as plantas:
Agora que controlamos a movimentação do zombie, podemos fazer com que ele coma alguma planta, caso encontre alguma pelo caminho.
Para detectar a planta, podemos criar um método para isso chamado "DetectPlant", e dentro desse método podemos disparar um raycast que sai do zombie, e caso esse raycast colida com um objeto no layer "Plants", o zombie começa a comer a planta, pois nesse layer só teremos elas.
Crie uma variável do tipo "RaycastHit2D" chamada "hit" e faça com que ela receba o método Raycast através da classe "Physics2D".
O raycast será disparado do zombie (transform.position) à sua esquerda sempre, ou seja, Vector2.right negativo, numa curta distância de 0.3f para ser bem rente ao colisor da planta, no layer "Plants":


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B13


Então se o raycast encontrar com algum colisor (ou seja, hit.collider não será nulo) isso significa que ele poderá parar e comer a planta.
Para ele iniciar o ataque à planta, primeiro podemos mudar a sua animação, fazendo com que o parâmetro "isEating" fique true, canWalk vai ficar false, assim o zombie pára e não vai mais se mover, e o som do zombie comendo poderá ser reproduzido.
Caso o raycast não colida com nada, significa que o zombie pode continuar andando, ou seja, paramos o áudio dele comendo, trocamos a animação fazendo com que "isEating" fique false, e podemos fazer com que canWalk e canHit fiquem true, permitindo que o zombie possa andar e possa comer (caso encontre alguma planta):


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B14


Porém, não basta apenas que ele reproduza um áudio e mude a animação para indicar que o zombie está comendo a planta, precisamos de fato retirar a vida da planta cada vez que o zombie a atacar.
Para que não tiremos a vida da planta muito rapidamente e ela vá à 0 em poucos segundos, podemos criar uma corrotina que vai retirando a vida da planta à cada 2 segundos.
Para tal, crie um método que retorne um IEnumetator com o nome de "DelayEat" e que aceita como parâmetro um Collider2D (para sabermos de qual planta iremos retirar a vida).
Dentro desse método chame o yield return new WaitForSeconds(2) e após esses dois segundos retire a vida da planta de acordo com seu collider.
Só que como o método "DetectPlant" irá ser chamado dentro do Update, faremos com que consequentemente a corrotina seja chamada muitos frames por segundo enquanto estivermos colidindo com a planta, então mesmo com a espera de 2 segundos esse tempo não será totalmente respeitado, porque a corrotina vai ser chamada muitas vezes seguidas, então para acabar com esse problema, faça com que a variável "canHit" gerencie quando a corrotina pode ser chamada, ou seja, enquanto estiver true chamaremos ela, do contrário não.
Então dentro do método "DelayEat" já faça com que canHit fique false, e só após os 2 segundos ela voltará a ficar true:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B15


Para tirar a vida da planta, basta utilizamos o seu collider para identificarmos qual planta de fato colidiu com o raycast do zombie, e depois basta utilizar o script "Properties" que contém a variável "life" da planta e realizar seu decremento para diminuir a vida, ou seja, ela irá perder uma unidade de vida à cada 2 segundos enquanto o zombie colide com ela.

Volte para o "DetectPlant" e chame a corrotina somente se "canHit" for verdadeiro, passando como argumento justamente o collider da planta, ou seja, hit.collider.
Dentro do 'else', faça com que a corrotina pare, assim se a planta já morreu ou foi removida, a corrotina parará de ser chamada:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B16


Fazendo com que o zombie morra:
Nos próximos tutoriais irei criar o comportamento de cada planta aqui do remake, e isso inclui fazer com que as PeaShooters atirem contra os zombies fazendo com que eles morram, ou seja, precisamos também desenvolver seu terceiro e último comportamento, que seria fazer com que ele morra.
O método é bem simples, basta criá-lo sem retorno com o nome de "CheckDeath" e verificar se a vida dele (zombieLife) é menor ou igual a 0, e caso for, basta destruir o objeto:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B18


Eu disse que seria bem simples. '-'
Por fim, basta chamar os métodos "DetectPlant" e "CheckDeath" dentro do update e está pronto:


[TUTORIAL] Criando Plants Vs Zombies - parte 2  Untitled%2B19


Salve o script e posicione o zombie em algum local correto da grama e teste o jogo, o resultado deverá ser esse aqui:




Já que tudo está correto, transforme esse objeto em prefab e salve a cena, porque no próximo tutorial iremos desenvolver o comportamento de cada planta, então até lá.
MayLeone
MayLeone
Instrutor

Feminino PONTOS : 2135
REPUTAÇÃO : 493
Áreas de atuação : Unity & C#
Respeito as regras : [TUTORIAL] Criando Plants Vs Zombies - parte 2  Aad8pUi

http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Criando Plants Vs Zombies - parte 2

Mensagem por NKKF em Qua Maio 30, 2018 5:55 pm

Continua incrível Smile , tutoriais tão grandes que dão preguiça só de abrir ;-;
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 3290
REPUTAÇÃO : 526
Idade : 16
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras : [TUTORIAL] Criando Plants Vs Zombies - parte 2  Aad8pUi

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Criando Plants Vs Zombies - parte 2

Mensagem por MayLeone em Qua Maio 30, 2018 6:04 pm

@NKKF escreveu:Continua incrível Smile , tutoriais tão grandes que dão preguiça só de abrir ;-;
Até q esse é pequeno em comparação ao anterior kkkkk
Em breve vou fazer esses tutoriais em vídeo, que fica melhor de explicar, mas primeiro preciso de um microfone que preste.  :roll:
MayLeone
MayLeone
Instrutor

Feminino PONTOS : 2135
REPUTAÇÃO : 493
Áreas de atuação : Unity & C#
Respeito as regras : [TUTORIAL] Criando Plants Vs Zombies - parte 2  Aad8pUi

http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum