[DUVIDA] Controle do movimento do ricocheteio de object 2D
2 participantes
Página 1 de 1
[DUVIDA] Controle do movimento do ricocheteio de object 2D
Olá galera tudo bom?
Estou precisando de uma ajuda para conseguir controlar o ricocheteio de um GameObject 2D ( uma bola ), através de uma plataforma.
Consegui fazer com que a bola tivesse um movimento de ricocheteio comum, bate na parede ou na plataforma e o movimento continua
utilizando a normal formada na colisão para conseguir refletir a coordenada.
=========================================================================================
private void OnCollisionEnter2D(Collision2D colisor)
{
bool colisaoInvalida = false;
// pegamos a normal resultante da colisão
Vector2 normal = colisor.contacts[0].normal;
// referencia o gameObject Plataforma que colide com a bola
Plataforma plataforma = colisor.transform.GetComponent<Plataforma>();
// referencia o GameObject GeradorDeArestas que colide com a bola
GeradorDeArestas geradorDeAresta = colisor.transform.GetComponent<GeradorDeArestas>();
if (plataforma != null)
{ // Verifica a existencia da colisão entre a plataforma e a bola
if(normal != Vector2.up)
{ // Verifica se a normal da colisão é dirente do vetor para cima
colisaoInvalida = true;
} else
{
//Acredito que ficaria aqui o controle do ricocheteio
}
} else if(geradorDeAresta != null)
{ // Verifica a existencia da colisão entre o limite da tela e a bola
if(normal == Vector2.up)
{ // Verifica se a normal da colisão é igual ao vetor para cima
colisaoInvalida = true;
}
} else
{
colisaoInvalida = false;
}
if(colisaoInvalida == false){
direcao = Vector2.Reflect(direcao, normal); // invertemos a direção em relação à normal
direcao.Normalize(); // normalizamos a nova direção
}
}
=========================================================================================
gostaria de saber como eu poderia fazer com que a bola tivesse um comportamento de ricocheteio diferente para alguns pontos da plataforma,
como por exemplo:
- a bola colide no centro da plataforma, então a bola ricocheteia exatamente na normal (90º em relação a plataforma)
- a bola bate na parte esquerda, então a bola ricocheteia para esquerda
- a bola bate na parte direita, então a bola ricocheteia para a direita
Agradeço qualquer tipo de ajuda :D :D
Estou precisando de uma ajuda para conseguir controlar o ricocheteio de um GameObject 2D ( uma bola ), através de uma plataforma.
Consegui fazer com que a bola tivesse um movimento de ricocheteio comum, bate na parede ou na plataforma e o movimento continua
utilizando a normal formada na colisão para conseguir refletir a coordenada.
=========================================================================================
private void OnCollisionEnter2D(Collision2D colisor)
{
bool colisaoInvalida = false;
// pegamos a normal resultante da colisão
Vector2 normal = colisor.contacts[0].normal;
// referencia o gameObject Plataforma que colide com a bola
Plataforma plataforma = colisor.transform.GetComponent<Plataforma>();
// referencia o GameObject GeradorDeArestas que colide com a bola
GeradorDeArestas geradorDeAresta = colisor.transform.GetComponent<GeradorDeArestas>();
if (plataforma != null)
{ // Verifica a existencia da colisão entre a plataforma e a bola
if(normal != Vector2.up)
{ // Verifica se a normal da colisão é dirente do vetor para cima
colisaoInvalida = true;
} else
{
//Acredito que ficaria aqui o controle do ricocheteio
}
} else if(geradorDeAresta != null)
{ // Verifica a existencia da colisão entre o limite da tela e a bola
if(normal == Vector2.up)
{ // Verifica se a normal da colisão é igual ao vetor para cima
colisaoInvalida = true;
}
} else
{
colisaoInvalida = false;
}
if(colisaoInvalida == false){
direcao = Vector2.Reflect(direcao, normal); // invertemos a direção em relação à normal
direcao.Normalize(); // normalizamos a nova direção
}
}
=========================================================================================
gostaria de saber como eu poderia fazer com que a bola tivesse um comportamento de ricocheteio diferente para alguns pontos da plataforma,
como por exemplo:
- a bola colide no centro da plataforma, então a bola ricocheteia exatamente na normal (90º em relação a plataforma)
- a bola bate na parte esquerda, então a bola ricocheteia para esquerda
- a bola bate na parte direita, então a bola ricocheteia para a direita
Agradeço qualquer tipo de ajuda :D :D
Rafael Kuriki- Iniciante
- PONTOS : 2859
REPUTAÇÃO : 0
Respeito as regras :
Re: [DUVIDA] Controle do movimento do ricocheteio de object 2D
Você pode colocar simplesmente um colisor inclinado no canto da plataforma...
Outra coisa que você pode fazer é colocar triggers nos cantos da plataforma, para fazer um AddForce.
Outra coisa que você pode fazer é colocar triggers nos cantos da plataforma, para fazer um AddForce.
Tópicos semelhantes
» Duvida de script de controle
» Controle de movimento para joystick estilo Diablo III
» [Dúvida] Multiplayer Client Object Spawn
» [DÚVIDA](Multiplayer) Comando para non-Player object
» [Resolvido] duvida sobre prefab, object e gameobject
» Controle de movimento para joystick estilo Diablo III
» [Dúvida] Multiplayer Client Object Spawn
» [DÚVIDA](Multiplayer) Comando para non-Player object
» [Resolvido] duvida sobre prefab, object e gameobject
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos