[RESOLVIDO] Efeito de vento Unity 2D
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Efeito de vento Unity 2D
Efeito de vento na Unity
Olá, gostaria de adicionar um efeito de vento que jogue o player na direção contraria, mas não faço ideia do que fazer.
A ideia seria de que quanto mais perto do vento o player estar, mais dificil seja chegar perto.
Olá, gostaria de adicionar um efeito de vento que jogue o player na direção contraria, mas não faço ideia do que fazer.
A ideia seria de que quanto mais perto do vento o player estar, mais dificil seja chegar perto.
Prandini- Iniciante
- PONTOS : 1299
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Efeito de vento Unity 2D
"efeito de vento que jogue o player na direção contraria"
Vento normalmente tem um sentido, uma direção, no caso o que você quer é mais parecido com um campo de força ou imã reverso, que vai repelir o jogador caso o mesmo ande no sentido do objeto.
primeiro calcule a distância entre o player e o objeto:
https://docs.unity3d.com/ScriptReference/Vector2.Distance.html
Aí com o inverseLerp, você vai calcular quanto da força vai ser aplicada pra cada distância:
https://docs.unity3d.com/ScriptReference/Mathf.InverseLerp.html
O inverseLerp funciona assim, você passa uma distância mínima, uma distancia máxima e o valor de distancia que você calculou entre o player e o objeto.
se a distancia calculada for menor ou igual a mínima, ele retorna 0.
se a distância calculada for maior ou igual a máxima, ele retorna 1.
Qualquer valor entre min e max fica entre 0 - 1;
Com isso você vai conseguir controlar a intensidade da força que vai aplicar conforme a distância, você só precisa multiplicar esse valor do inverseLerp por uma força total, ex: forcaInverseLerp * 2500;
você já tem a força que muda com a distância, precisa da direção que vai aplicar ela, se o que quer for vento mesmo, uma única direção fixa, basta multiplicar um Vector2 com essa direção pelo resultado da força e aplicar isso no rigidbody2D.
Se for igual a um campo de força, você precisa calcular a direção oposta.
(posicaoJogador - posicaoCampoForca).normalized <= isso vai te dar a direção oposta.
aí é o mesmo esquema, multiplica isso pela força e aplica no rigidBody2d com o AddForce;
https://docs.unity3d.com/ScriptReference/Rigidbody2D.AddForce.html
Vento normalmente tem um sentido, uma direção, no caso o que você quer é mais parecido com um campo de força ou imã reverso, que vai repelir o jogador caso o mesmo ande no sentido do objeto.
primeiro calcule a distância entre o player e o objeto:
https://docs.unity3d.com/ScriptReference/Vector2.Distance.html
Aí com o inverseLerp, você vai calcular quanto da força vai ser aplicada pra cada distância:
https://docs.unity3d.com/ScriptReference/Mathf.InverseLerp.html
O inverseLerp funciona assim, você passa uma distância mínima, uma distancia máxima e o valor de distancia que você calculou entre o player e o objeto.
se a distancia calculada for menor ou igual a mínima, ele retorna 0.
se a distância calculada for maior ou igual a máxima, ele retorna 1.
Qualquer valor entre min e max fica entre 0 - 1;
Com isso você vai conseguir controlar a intensidade da força que vai aplicar conforme a distância, você só precisa multiplicar esse valor do inverseLerp por uma força total, ex: forcaInverseLerp * 2500;
você já tem a força que muda com a distância, precisa da direção que vai aplicar ela, se o que quer for vento mesmo, uma única direção fixa, basta multiplicar um Vector2 com essa direção pelo resultado da força e aplicar isso no rigidbody2D.
Se for igual a um campo de força, você precisa calcular a direção oposta.
(posicaoJogador - posicaoCampoForca).normalized <= isso vai te dar a direção oposta.
aí é o mesmo esquema, multiplica isso pela força e aplica no rigidBody2d com o AddForce;
https://docs.unity3d.com/ScriptReference/Rigidbody2D.AddForce.html
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Efeito de vento Unity 2D
Valeu demais! Era exatamente isso que eu precisava, muito obrigado. Acabei me expressando mal, valeu!!
Prandini- Iniciante
- PONTOS : 1299
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Objeto não sofre efeito da gravidade Unity
» [RESOLVIDO] Como fazer um efeito Parallax com o Canvas no Unity?
» Sistema CFD com Unity: Simular partículas com colisão em túnel de vento
» [Resolvido] EFEITO LUZ DE UM RELAMPAGO
» [RESOLVIDO] Efeito Submerço
» [RESOLVIDO] Como fazer um efeito Parallax com o Canvas no Unity?
» Sistema CFD com Unity: Simular partículas com colisão em túnel de vento
» [Resolvido] EFEITO LUZ DE UM RELAMPAGO
» [RESOLVIDO] Efeito Submerço
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos