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:
Dark blue sword RPG low poly
Preciso de ajuda em um script para o trabalho do meu estágio.
Script de health de inimigo sendo acessado mesmo sem acerta o inimigo
Atualizado (The Pyramid 1.1.1)
[TUTORIAL] Como criar um JOGO DE TERROR
Problema com o Shader (Shader Bloqueado)
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Como faço para o player agachar
Erro ao carregar cena salva
Resolução Resposiva
Skybox da unity rosa
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
tem como mudar a cor desse fundo de distância azul?
PROBLEMA EM COPIAR SCRIPTS
[TUTORIAL] Otimização Simples por distância
Inventário de objetos 2D
video aula videoplayback easy ar /unity
como faz LookAt em 2d
Visual studio nao instala com compatibilidade com a unity :C
[JOGO MOBILE] The Sprinter Maze / Agradecimentos
Criar jogo de terror
Botao Home(Native do Android)
personagem do unity sem animaçao e caindo pra baixo
Carregar video por url remote settings
Custom Inspector
Montando equipe! [Game survival]
É recomendado fazer cidades fictícias no sketchup?
[TUTORIAL] AI Enemy 2.0 + animações ( Jogos de terror )
Sprite crescer em linha reta como um laser 2D
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[____ENQUETE____] Eleições para presidente 2018
[RESOLVIDO] Problema para Carregar cena
[RESOLVIDO] Como exportar o modelo sem o seguinte prefab:
[RESOLVIDO] correr character controller
Problema com Wheel Collider
Ajuda na criação de AudioSource
Ambient Occlusion para mobile.
Erro ao instalar o componente da Unity no Visual Studio
[____SUGESTÕES PARA O FÓRUM____]
[PROJETO MOBILE] Defeat the Illuminatis
Camera Estilo Gta (Livre que Volta Sozinha)
O básico do script
[____ADERIR A UMA CATEGORIA NO FÓRUM____]
Precisa-se DE Modelador/Animador Para Um Jogo de RPG Online..
unity - erro ao salvar dados
Duvidas com Json
Artistas 3D e Programadores Unity3D (Remunerado)
[TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
[TUTORIAL ] Script para Cutscenes
The Pyramid Demo Atualizado
Problemas com Colisores
Como fazer a vida ficar encima do player enquanto ele se move
Camera olhar para player em planeta esférico (estilo Mario Galaxy)
[RESOLVIDO] Ativar um Unico Objeto da Array.
tela preta do unity apos abrir no celular..
Procuro desenvolvedor Google Maps
Destruir Terreno
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Erro de arquivo CSPROJ na Unity
[RESOLVIDO] Diminuir um número
[RESOLVIDO] String.contains
Command 888
[TUTORIAL] Mover personagem com Touch, no estilo SUBWAY SURFERS
Ajuda com código Raycast2D
[TUTORIAL] Bubble Sort - Algoritmo
touch do android em C# Unity
[TUTORIAL] Gerar números aleatórios SEM REPETIR (método com lista)
[TUTORIAL] Sistema de Lanterna com Pilhas
Dúvida, poupar processador.
Gerador de senha
(ARQUIVO) Leia aqui como obter sucesso com seu jogo independente?
Alguém pode corrigir as roupas do meu personagem? (Modelagem 3D - Pedido)
Dúvida em relação ao Enum
Para quem é fã de The King of Fighters!
Bora entrar no Discord.. Tirando Duvidas Online..
Bugando depois do Build.
[_ASSET_] MS Vehicle System (Vehicle Controller)
[RESOLVIDO] Mudança de GUI para UI?
Alguem pode me ajudar? tenho esse erro aqui em um script mas nao consigo resolver...:
Grupo de personagens
[Dúvida] Multiplayer Client Object Spawn
PLAYER NAO MOVER ENQUANTO ESTA ABAIXADO
Unity - Erro ao Acessar Classe de Objeto
Ajuda com sistema de flecha com mira pareada com a câmera
PAGO POR SERVIÇO, crianção de jogo android 2d online
Simulador de Controle de Tráfego Aéreo
[RESOLVIDO] Problema com Compilação para Android
Como otimizar minha criação de labirintos?
[RESOLVIDO] Unity - Soma Entre Strings
Força do pulo
java é seguro? Node.js: Server-side JavaScript é seguro?
Input de Player (Android)
Melhor maneira de se colocar som de passos em um jogo 3D ?
Tutorial UNet MULTIPLAYER
Testa meu game Please!!!
[RESOLVIDO] Ajuda Sistema de colheita/fazenda
[Formação de Equipe] Battles of Worlds
[RESOLVIDO] Raycast
Hoje à(s) 6:01 pm
Hoje à(s) 5:46 pm
Hoje à(s) 1:27 pm
Hoje à(s) 12:53 pm
Hoje à(s) 10:02 am
Ontem à(s) 8:10 pm
Ontem à(s) 7:43 pm
Ontem à(s) 7:16 pm
Ontem à(s) 7:11 pm
Ontem à(s) 7:10 pm
Ontem à(s) 3:02 pm
Ontem à(s) 1:17 pm
Ontem à(s) 10:51 am
Ontem à(s) 10:34 am
Ontem à(s) 10:23 am
Ontem à(s) 10:21 am
Ontem à(s) 2:14 am
Ontem à(s) 1:17 am
Ter Set 18, 2018 9:01 pm
Ter Set 18, 2018 1:59 pm
Ter Set 18, 2018 11:44 am
Ter Set 18, 2018 2:48 am
Seg Set 17, 2018 10:05 pm
Seg Set 17, 2018 7:55 pm
Seg Set 17, 2018 7:54 pm
Seg Set 17, 2018 6:46 pm
Seg Set 17, 2018 12:58 pm
Seg Set 17, 2018 12:54 pm
Seg Set 17, 2018 8:18 am
Seg Set 17, 2018 7:36 am
Seg Set 17, 2018 7:35 am
Seg Set 17, 2018 7:34 am
Dom Set 16, 2018 11:15 pm
Dom Set 16, 2018 11:13 pm
Dom Set 16, 2018 4:50 pm
Dom Set 16, 2018 5:13 am
Sab Set 15, 2018 10:06 pm
Sab Set 15, 2018 10:00 pm
Sex Set 14, 2018 8:41 pm
Sex Set 14, 2018 8:37 pm
Sex Set 14, 2018 6:57 pm
Sex Set 14, 2018 5:17 pm
Sex Set 14, 2018 2:04 pm
Sex Set 14, 2018 11:10 am
Qui Set 13, 2018 3:36 pm
Qui Set 13, 2018 10:14 am
Qui Set 13, 2018 9:48 am
Qui Set 13, 2018 9:25 am
Qua Set 12, 2018 11:40 pm
Qua Set 12, 2018 6:04 pm
Qua Set 12, 2018 12:57 pm
Qua Set 12, 2018 3:33 am
Qua Set 12, 2018 12:25 am
Ter Set 11, 2018 8:00 pm
Ter Set 11, 2018 4:20 pm
Ter Set 11, 2018 2:52 pm
Ter Set 11, 2018 2:20 pm
Ter Set 11, 2018 12:27 pm
Seg Set 10, 2018 11:10 pm
Seg Set 10, 2018 8:29 pm
Seg Set 10, 2018 7:17 pm
Seg Set 10, 2018 6:47 pm
Seg Set 10, 2018 12:08 pm
Seg Set 10, 2018 9:07 am
Dom Set 09, 2018 11:27 pm
Dom Set 09, 2018 6:58 pm
Dom Set 09, 2018 3:53 am
Sab Set 08, 2018 11:37 pm
Sab Set 08, 2018 11:29 pm
Sab Set 08, 2018 11:23 pm
Sab Set 08, 2018 10:23 pm
Sab Set 08, 2018 6:23 pm
Sab Set 08, 2018 5:07 pm
Sab Set 08, 2018 1:24 pm
Sab Set 08, 2018 1:05 pm
Sab Set 08, 2018 11:40 am
Sab Set 08, 2018 10:40 am
Sab Set 08, 2018 2:12 am
Sex Set 07, 2018 12:47 pm
Sex Set 07, 2018 9:37 am
Sex Set 07, 2018 8:59 am
Sex Set 07, 2018 5:57 am
Qua Set 05, 2018 8:20 pm
Qua Set 05, 2018 6:37 am
Qua Set 05, 2018 12:13 am
Ter Set 04, 2018 9:35 pm
Ter Set 04, 2018 7:07 am
Seg Set 03, 2018 7:35 pm
Seg Set 03, 2018 6:12 pm
Seg Set 03, 2018 6:04 pm
Seg Set 03, 2018 8:16 am
Dom Set 02, 2018 11:15 pm
Dom Set 02, 2018 11:12 pm
Dom Set 02, 2018 11:05 pm
Dom Set 02, 2018 8:06 pm
Dom Set 02, 2018 12:19 am
Sab Set 01, 2018 11:51 pm
Sab Set 01, 2018 6:19 pm
Sab Set 01, 2018 9:33 am
MRX
artplayer
Jmspp
Callyde Jr
francisco barroso
diegopds
artplayer
MayLeone
Callyde Jr
NKKF
DuViDoSo
francisco barroso
Daniel Dória
francisco barroso
Daniel Dória
Caius
marciosilva
MarcosSchultz
luiz12345
JohnRambo
Callyde Jr
rafaelllsd
francisco barroso
natanael.olimpio
speedluk
PedroSilva
Callyde Jr
Callyde Jr
Ezequiel286
dstaroski
dstaroski
dstaroski
Eduardoro39
SuperGamer
JuR
MarcosSchultz
MeverPlays
MeverPlays
MarcosSchultz
MarcosSchultz
dstaroski
dstaroski
dstaroski
JohnRambo
fecirineu
igorobm
igorobm
igorobm
Eduardoro39
NKKF
Callyde Jr
MarcosSchultz
MarcosSchultz
MarcosSchultz
nicolasfive
natanael.olimpio
natanael.olimpio
INKnight
FuncaoFF
dstaroski
QueriaStarMorto
NyanHeavyBR
Callyde Jr
FabioBRPA
MarcosSchultz
NKKF
niao
MarcosSchultz
MarcosSchultz
MarcosSchultz
Flávio
Joab Artes Gráficas
vitorhugo
Callyde Jr
Callyde Jr
fecirineu
FeLotus
MarcosSchultz
Callyde Jr
fecirineu
lelouchsdky
Callyde Jr
gurgelg752
Tiago95
FelipeSouza11
ruanzikaad
joz
WesFarias
TassoCervi
Magnatah
junkflash30
MarcosSchultz
MarcosSchultz
MarcosSchultz
natanael.olimpio
EmperorGO
hhsantos
Dom3000
QueriaStarMorto

[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



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:



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:




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:




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





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":




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:




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":




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:





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



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:




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":




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":




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




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:




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:




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:




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




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á.
avatar
MayLeone
ProgramadorMaster

Feminino PONTOS : 401
REPUTAÇÃO : 135
Áreas de atuação : Unity, Rpg Maker, Scratch, C#, C++, HTML, CSS, JS, MySQL, Blender
Respeito as regras :

Ver perfil do usuário 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 ;-;
avatar
NKKF
ProgramadorMaster

Masculino PONTOS : 1942
REPUTAÇÃO : 401
Idade : 13
Áreas de atuação : Error 404 Not Found.
Respeito as regras :

Ver perfil do usuário http://www.projetounity.esy.es

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:
avatar
MayLeone
ProgramadorMaster

Feminino PONTOS : 401
REPUTAÇÃO : 135
Áreas de atuação : Unity, Rpg Maker, Scratch, C#, C++, HTML, CSS, JS, MySQL, Blender
Respeito as regras :

Ver perfil do usuário http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

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