Fórum Efeito blayblade ....preciso de ajuda para fazer o impacto #203137
27/12/2003
0
to fazendo um jogo
e preciso simular o seguinte efeito
imaginem um peão girando parado (a)
e o outro vem da sua direita (b)
e se choca com ele
o pião (a) terá q ir pra direita e depois ir perdendo aceleração e ficar parado novamente
quero saber como faço isso
a direção q ele vai ter q andar
tipo o angulo como se agente chutasse uma bola
é meio complicado de explicar espero q tenhaum entendido
desde já obrigado
Robotizar
Curtir tópico
+ 0Posts
28/12/2003
Henry
Gostei + 0
28/12/2003
Cebikyn
http://turbo.gamedev.net/delphix.asp
E a resposta pro Robotizar:
Pra fazer o efeito Beyblade (apenas como achar a direção será explicado, a parte de aceleração é por sua conta):
Observe a figura abaixo:
[img:5bf8b2b629]http://www.guarany70ge.hpg.ig.com.br/ads/robotizar.png[/img:5bf8b2b629]
O pião (a), seguirá sua trajetória em um ângulo theta 1 com a horizontal, então para descobrir qual é este ângulo, basta usar o principio da conservação do movimento linear, ficaria assim:
No eixo X:
m1 * v1i = m1 * v1f * cos(theta1) + m2 * v2f *cos(theta2)
No eixo Y:
0 = - m1 * v1f * sen(theta1) + m2* v2f * sen(theta2)
Como a energia cinética dos piões tb é conservada, pode-se montar a seguinte equação:
½m1 * v1i^2 = ½m1 * v1f^2 + ½m2 * v2f^2
Assim, vc fica com um sistema de 3 equações com 7 variáveis, para resolve-lo, basta substituir 4 destas variáveis por valores conhecidos e vc obterá os valores das outras 3.
Simples, não? Agora resta a pergunta: vc vai se assustar com as equações ou vai implementar tudo no Delphi e gritar Let it riiiiiiiiiiiiip!!!!! ?
Qualquer dúvida sobre as equações ou sobre como faze-las no Delphi, deixe uma msg.
Ahhh, já ia me esquecendo: muito bom o seu portal robotizar.kit.net, o design ta muito bom.
Gostei + 0
28/12/2003
Robotizar
C CUNHECEEEEEEEEEEE!!!!!!!!
Vlw vou testar aqui qualquqer duvida falo com vc...e vlw pelo elogio ao site
Gostei + 0
28/12/2003
Robotizar
tipo o q vai ser cada variavel ai me explica direitinho
desde já agradeço
Gostei + 0
28/12/2003
Cebikyn
m1: Massa do pião que chega pela direita (vc escolhe, se não quiser que a massa tenha influência no resultado, use 1, mas vc deve saber que a massa influencia, tanto que são colocados os anéis de ataque para aumentar o peso.)
m2: Massa do pião “parado” (mesmas observações)
v1i: Velocidade linear inicial do pião que bate (vc q escolhe)
v1f: Velocidade linear final do pião que bate, após a colisão (será calculada)
v2f: Velocidade linear final do pião que estava “parado” (tb será calculada)
theta1 e theta2: ângulos que indicarão a direção (as letras gregas da figura)
Aguarde o código, eu vou ver se acho uma forma mais fácil de resolver o sistema de equações.
Gostei + 0
28/12/2003
Cebikyn
theta1 = 180 - 2 * arcsen(b / R), em que b é indicado na figura abaixo e R é o raio do pião (preferencialmente os piões devem ter o mesmo raio).
theta2 será (o código comentado resulta em ângulos positivos, o código não comentado resulta nos ângulos negativos correspondentes):
if (theta1> -90) and (theta1 < 90) then theta2 := -1 * theta1 // ou 360 - theta1 else theta2 := -1 * (180 - theta1); // ou 360 - (180 - theta1)
[img:4fc527a46f]http://www.guarany70ge.hpg.ig.com.br/ads/robotizar2.png[/img:4fc527a46f]
A função arcsen está na unit Math, para usá-la, coloque:
theta1 = 180 - 2 * RadToDeg(arcsen(b / R));
Fazendo do jeito anterior, o seu jogo será mais real, mas é muito difícil resolver equações não lineares no Delphi... :(
Gostei + 0
28/12/2003
Robotizar
me da um altografo???
C cunheceeeeeeeeee!!! hehehhehehehe
vlw mesmo de coração se eu conseguir levar o jogo até o final seu nome vai estar lá pode ter certeza.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)