Enviado em 18/09/2020 - 19:44h
Olá, venho aqui hoje porque tenho uma grande duvida, desejo ver ao bater de duas imagens, calcular o angulo de qual a segunda veio e manda-lá um certa distancia para trás, tipo ricochetear.
Enviado em 18/09/2020 - 19:44h
Enviado em 18/09/2020 - 21:17h
Veja a função "boudingbox", ela recebe dois retangulos, cada retangulo tem o ponto x e y no canto esquerdo superior, que é normalmente onde fica a origem do retangulo em toolkits.
https://github.com/cpusam/chora_engine/blob/master/include/collision.hpp
No eixo Y é feito a mesma coisa, avalia a velocidade Y do objeto A e move o A em Y em relação ao objeto B.
No caso 1, para mover para fora o objeto A do B, você deve fazer algo assim:
if (velAX < 0) {
defina posição X do objeto A = posição X objeto B + (largura retangulo de B) / 2 + (largura retangulo de A) / 2;
}
//esse abaixo é para o caso 2
else if (velAX > 0) {
defina posição X do objeto A = posição X objeto B - (largura retangulo de B) / 2 - (largura retangulo de A) / 2;
}
Depois de processada colisão em X e Y ai sim você pode calcular o angulo da posição X/Y de A para B.
Só fazer um if (velAY > 0) {
//move A pra cima de B
}
else if (velAY < 0) {
//move A pra baixo de B
}
Entre na sua conta para responder.