[RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
Boa noite, estou com uma dúvida por que estou num mini curso e um exercício requer que eu ative isKinematic ao trombar com um objeto "Enemy" por 3 segundos, depois desse tempo volta a ficar desativado. Estou no começo do curso, peço desculpa se for algo muito na cara T-T
ApcRaffs- Iniciante
- PONTOS : 460
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
Estou pelo celular então vou explicar por cima.
Primeiro o gameobject deve ter colisor e um rigidbody.
Para que algo seja feito ao entrar em uma colisão, tu deve fazer isso dentro do OnColissionEnter.
Você terá que fazer um if para verificar se é com um inimigo que o seu personagem colidiu, o jeito mais fácil é colocar uma tag específica no inimigo e verificar se o objeto que colidiu possui essa tag.
https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html
https://docs.unity3d.com/ScriptReference/Component.CompareTag.html
Depois disso vem a parte de contar o tempo, existem 2 formas de fazer uma se chama invoke e outra coroutine.
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html
https://docs.unity3d.com/ScriptReference/WaitForSeconds.html
https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html
E também tem a questão de como ativar o kinematic.
https://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html
Primeiro o gameobject deve ter colisor e um rigidbody.
Para que algo seja feito ao entrar em uma colisão, tu deve fazer isso dentro do OnColissionEnter.
Você terá que fazer um if para verificar se é com um inimigo que o seu personagem colidiu, o jeito mais fácil é colocar uma tag específica no inimigo e verificar se o objeto que colidiu possui essa tag.
https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html
https://docs.unity3d.com/ScriptReference/Component.CompareTag.html
Depois disso vem a parte de contar o tempo, existem 2 formas de fazer uma se chama invoke e outra coroutine.
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html
https://docs.unity3d.com/ScriptReference/WaitForSeconds.html
https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html
E também tem a questão de como ativar o kinematic.
https://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html
Re: [RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
até a parte do personagem colidir com o inimigo, e ativar o iskinematic eu consigo, o que nao consigo é desativar ele após 3 segundos, isso precisar ser um codigo que a cada contato com inimigo eu fico sem levar dano por 3 segundos, dps volto a levar dano, e novamente 3 segundos sem levar dano, e por aii vai
ApcRaffs- Iniciante
- PONTOS : 460
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
tranquilo, usa o Invoke.ApcRaffs escreveu:até a parte do personagem colidir com o inimigo, e ativar o iskinematic eu consigo, o que nao consigo é desativar ele após 3 segundos, isso precisar ser um codigo que a cada contato com inimigo eu fico sem levar dano por 3 segundos, dps volto a levar dano, e novamente 3 segundos sem levar dano, e por aii vai
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html
tu terá que criar um método/função que desativa o iskinematic e que não receba parâmetros, algo bem simples e tranquilo. para fins de exemplo vou chamar esse método de DesativarKinematic()
- Código:
Invoke("DesativarKinematic", 3f);
Para usar o invoke precisa passar 2 parâmetros, o primeiro é o nome do método que tu vai querer chamar, como tu está vendo ali tem que passar entre "aspas" ou seja tu ta passando uma string, então não tem como tu passar parâmetro para ele, o segundo parâmetro é um float, esse float representa o tempo de espera para chamar o método.
Re: [RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
nuss mano, muito obrigado, foi um tapa na cara, tinha visto Invoke, mas nao entendi 100% x.x vlw mesmo
ApcRaffs- Iniciante
- PONTOS : 460
REPUTAÇÃO : 2
Respeito as regras :

» [RESOLVIDO] Trocar valor de variável apos X segundos que ativar o triggercollider
» [RESOLVIDO] Como ativar e desativar um objeto.
» [RESOLVIDO] Lista e ativar e desativar funções do script
» [RESOLVIDO] ATIVAR E DESATIVAR OBJETO PRESSIONANDO BOTÃO
» [RESOLVIDO] Desativar e ativar objeto com o mesmo botão
» [RESOLVIDO] Como ativar e desativar um objeto.
» [RESOLVIDO] Lista e ativar e desativar funções do script
» [RESOLVIDO] ATIVAR E DESATIVAR OBJETO PRESSIONANDO BOTÃO
» [RESOLVIDO] Desativar e ativar objeto com o mesmo botão
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos