Efeito blayblade ....preciso de ajuda para fazer o impacto

Delphi

27/12/2003

oi
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

Robotizar

Curtidas 0

Respostas

Henry

Henry

27/12/2003

Robotizar meu velho que bom que vc ressurgiu, espero que não fique brabo de estar fazendo um pedido em vez de te responder, mas vc tem o delphiX pro Delphi6 ai??


GOSTEI 0
Cebikyn

Cebikyn

27/12/2003

DelphiX pra Delphi6 (pro Henry):
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:

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
Robotizar

Robotizar

27/12/2003

nossa!!!!1 cara num testei ainda mais como minha turma diz ....
C CUNHECEEEEEEEEEEE!!!!!!!!
Vlw vou testar aqui qualquqer duvida falo com vc...e vlw pelo elogio ao site


GOSTEI 0
Robotizar

Robotizar

27/12/2003

explica como vou usar isso no delphi ai q ficou meio confuso pra mim heheheheheh
tipo o q vai ser cada variavel ai me explica direitinho
desde já agradeço


GOSTEI 0
Cebikyn

Cebikyn

27/12/2003

[b:256d095823]Variáveis[/b:256d095823] (todas Extended):

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
Cebikyn

Cebikyn

27/12/2003

Pesquisei mais e achei uma forma muito mais fácil de achar a direção (sem todo aquele monte de variável), não é condizente com a realidade, mas fica igual ao desenho:

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)



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
Robotizar

Robotizar

27/12/2003

cara eu sou seu fã!!!!!!!!
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
POSTAR