GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Hoje à(s) 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


[Resolvido]Torricceli (Capítulo 1/2)

5 participantes

Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por saim Qui 08 Dez 2011, 00:24

Primeira parte
Não, esse tópico não está na seção errada. Não é um tutorial, embora eu dê mais informação do que peça. É mesmo uma pergunta (imensa) em dois capítulos (mais ou menos). Não posso ficar enrolando muito, senão não durmo essa semana, vamos lá.
Como calcular a posição que um objeto que se move sob ação de uma aceleração constante ocupará após um tempo t?
A equação de torricceli diz que:
torricceli escreveu:S = S0 + v0t + 1/2at²
Podemos facilmente substituir o S por y e chegar num sistema de coordenadas mais familiar:
y = y0 +v0y +1/2at²; onde
y = posição atual do objeto
y0 = posição inicial do objeto
v0 = velocidade inicial do objeto
t = tempo decorrido desde o momento inicial
a = aceleração imposta ao objeto
Vou deixar as derivadas e outras considerações mais cabreiras pra segunda parte da pergunta. Por enquanto, vou informar que essa equação NÃO FUNCIONA no game maker. Ela pode funcionar muito bem na vida real (também tem um monte de problemas), mas no game maker não funciona.
Porque? Não sei. Talvez porque a vida real seja feita de muitos infinitésimos de momentos e o computador seja feito de vários pedacinhos de tempo chamado steps. Outra hora a gente discute o PORQUE, mas, por enquanto, satisfaça-se com o seguinte: o game maker usa uma equação simples pra cada momento:
Código:
y = y + v;
v = v + a;
onde v é a velocidade e a é a aceleração.
Veja essa imagem. É um gráfico que mostra a posição "y" em função do tempo, usando torricceli e calculando a velocidade e, em função dela, a posição:[Resolvido]Torricceli (Capítulo 1/2) A3ffbqViu a diferença? Faça você mesmo: numa coluna, defina o valor de y em função de t usando a equação de torricceli, numa segunda calcule a velocidade e, numa terceira, calcule a posição em função da posição e da velocidade anteriores.
Nem adianta vir dizer que errei a primeira velocidade ou a primeira posição, eu brinquei pra valer com esses números. Sempre tem uma diferença.

segunda parte
(eu preciso dormir...)
Bom, então qual a equação da posição em função do tempo, no game maker? Quer dizer, eu lanço um objeto e quero saber qual será a posição dele daqui a 20 steps. Preciso calcular step-by-step ou tem uma equação que facilita a vida? Fiz o step-by-step e cheguei numa conclusão. Olha isso aqui:
y(1) = y(0) + v(0); //onde y(0) e v(0) são, supostamente, conhecidos
v(1) = v(0) + a;
y(2) = y(1) + v(1) = [y(0) + v(0)] + [v(0) + a] = y(0) + 2*v(0) + a
v(2) = v(1) + a = [v(0) + a] + a = v(0) + 2a
y(3) = y(2) + v(2) = [y(0) + 2*v(0) + a] + [v(0) + 2a] = y(0) + 3v(0) + 3a
v(3) = v(2) + a = v(0) + 2a + a = v(0) + 3a
y(4) = y(3) + v(3) = [y(0) + 3v(0) + 3a] + [v(0) + 3a] = y(0) + 4v(0) + 6a
v(4) = v(3) + a = [v(0) + 3a] + a = v(0) + 4a
y(5) = y(4) + v(4) = [y(0) + 4v(0) + 6a] + [v(0) + 4a] = y(0) + 5v(0) + 10a
v(5) = v(5) + a = [v(0) + 4a] + a = v(0) + 5a
y(6) = y(5) + v(5) = [y(0) + 5v(0) + 10a] + [v(0) + 5a] = y(0) + 6v(0) + 15a
v(6) = v(6) + a = [v(0) + 5a] + a = v(0) + 6a

Note o padrão. Pegue o multiplicador de V(0) a cada step e o multiplicador de a a cada step
1 1 0
2 2 1
3 3 3
4 4 6
5 5 10
6 6 15
O multiplicador de v(0) é o número de steps. Fácil. E o multiplicador de a? NÃO É 1/2*(numero de steps)²!!! A física é diferente!
Joguei a sequência (0, 1, 3, 6, 10, 15) no excell pra ele encontrar o padrão por mim. Pedi pra ele usar um polinômio de segundo grau. Verifica-se que, sendo t o número de steps, o multiplicador de a é:
1/2t² - 1/2t
Então, no game maker, ao invés de usarmos a fórmula "y = y(0) + v(0)t + 1/2at²", usamos
y = y(0) + v(0)t + (1/2t² - 1/2t)*a; que equivale a
y = y(0) + (v(0)-1/2a)*t + 1/2at²
, o que invalida toda a teoria clássica.

finalmente, a primeira pergunta
Você concorda com isso? Ou eu estou viajando na maionese? Eu quero perverter essa equação ao máximo, então não posso usar a equação errada.
Jogando no excell, funciona, mas eu me sinto como um cachorro correndo atrás do rabo ao fazer isso.

Cenas dos próximos capítulos...
- Como definir um ponto a ser atingido e calcular a velocidade inicial?
- Como derivar essa equação para descobrir o ápice da parábola?
- Inversão do eixo y e uma velocidade que não pode ser negativa: paradoxo?


Última edição por saim em Sex 09 Dez 2011, 17:30, editado 2 vez(es)
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por PedroX Qui 08 Dez 2011, 17:20

Você concorda com isso? Ou eu estou viajando na maionese? Eu quero perverter essa equação ao máximo, então não posso usar a equação errada.
Eu pensei que houvesse um erro, mas refiz o negócio de várias maneiras e nunca deu certo... Parece que é algo relacionado ao estado inicial (por exemplo, o valor da aceleração, da velocidade, da posição....)

- Como definir um ponto a ser atingido e calcular a velocidade inicial?
Nisso eu posso te ajudar.
Só me diga se é top down ou se é de plataforma (gravidade).
- Como derivar essa equação para descobrir o ápice da parábola?
Não aprendi ainda derivadas, mas dependendo do que for, dá para tentar de outros modos (tem alguns editáveis meus que 'precisavam' de derivadas, mas usei outros modos).
- Inversão do eixo y e uma velocidade que não pode ser negativa: paradoxo?
?

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por Mr. Kaleb Qui 08 Dez 2011, 17:57

Interessante esse tutorial...
Certa vez eu vi um engine que tinha dos sistemas, o interceptador e o criador. O criador criava circulos que iam na direção escolhida por você em qualquer lugar na room, e o interceptador criava outros circulos que atingiam os criados pelo criador, não importa onde você o colocasse. Realmente impressionante o modo como o sujeito trabalhou esse conceito, acho que deve ter alguma coisa a ver com seu tutorial.
Mr. Kaleb
Mr. Kaleb

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 07/09/2010
Reputação : 21
Número de Mensagens : 1400
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por PedroX Qui 08 Dez 2011, 18:33

Interessante esse tutorial...
Certa vez eu vi um engine que tinha dos sistemas, o interceptador e o criador. O criador criava circulos que iam na direção escolhida por você em qualquer lugar na room, e o interceptador criava outros circulos que atingiam os criados pelo criador, não importa onde você o colocasse. Realmente impressionante o modo como o sujeito trabalhou esse conceito, acho que deve ter alguma coisa a ver com seu tutorial.
Pelo visto você não leu a primeira linha.
Na primeira já diz que não é um tutorial.

Quanto ao tópico, estou tentando achar o problema, saim.

Enquanto isso, veja essa engine:
https://gmbr.forumeiros.com/t15335-acertar-alvo-com-tiro-parabolico

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por vinians Qui 08 Dez 2011, 19:03

Amigo o que você precisa é "desvetorizar" o movimento e transforma-lo em relação ao plano cartesiano (Game Maker). Veja sobre isso Aqui
Flws!
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por Igor KinGamer Sex 09 Dez 2011, 09:57

O problema é que você não aplicou a equação corretamente. Você usou a equação da posição como se a aceleração não existisse (MRU - Movimento Retilíneo Uniforme - Δs = vt), e por isso chegou àquela conclusão.
y(1) = y(0) + v(0); //onde y(0) e v(0) são, supostamente, conhecidos
...
Você está dizendo que o y, no step 1, é igual ao y inicial mais a velocidade inicial. Digamos, se o y inicial é 0 e a velocidade inicial é 0, você está dizendo que no step 1 a posição será ainda 0, o que não é verdade se há aceleração.

Veja, a equação da posição é: s = s0+v0t+(at2)/2; e, portanto, a da variação da posição é: Δs = v0t+(at2)/2. Logo, no Game Maker, sendo v a variável da velocidade vertical e a o valor da aceleração, para calcular a variação do y a cada step, fica assim (lembrando que a velocidade ainda não mudou e, de um step para o outro, o tempo é igual a 1):
y += v+a/2;

Então, você deve alterar a velocidade (v = v0+at):
v += a;

Em resumo:
// Step
y += v+a/2;
v += a;
Igor KinGamer
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por saim Sex 09 Dez 2011, 10:22

@Todos: podem ir direto pro final. Eu já tinha escrito MUITO quando o Igor KinGamer postou. O post dele resolveu o problema, mas eu resolvi manter a apresentação do raciocínio que eu vinha elaborando. Agora é tudo inútil, mas fica como justificativa da criação da novela.
Pedrø escreveu:
Você concorda com isso? Ou eu estou viajando na maionese? Eu quero perverter essa equação ao máximo, então não posso usar a equação errada.
Eu pensei que houvesse um erro, mas refiz o negócio de várias maneiras e nunca deu certo... Parece que é algo relacionado ao estado inicial (por exemplo, o valor da aceleração, da velocidade, da posição....)
Não sei se entendi o que você quis dizer. Você achou que houvesse um erro, mas não acha mais? Concorda com a nova equação ou ela nunca deu certo? Ou o que nunca deu certo foi usar torricceli?

Eu fiz e refiz alguns testes, a equação tem funcionado toda vez. Desde que, ao mudar a posição eu use, primeiro "y +=vsp;" e, depois, "vsp += grav;", os valores de entrada também conferem. Usei até uma situação em que a posição não mudava até eu apertar uma tecla, pra comparar os valores passo-a-passo, deu certinho. Comparei com os valores esperados ao usar torricceli, continuava diferente.
quer testar?:

Pedrø escreveu:
- Como definir um ponto a ser atingido e calcular a velocidade inicial?
Nisso eu posso te ajudar.
Só me diga se é top down ou se é de plataforma (gravidade).
Plataforma. Vi seu link, ainda não entrei (em casa, estou sem internet). Mas, se ele se basear em torricceli, vai dar errado. Use sprites minúsculos e baixa room_speed, pra ver. Passa perto, mas não acerta.

Pedrø escreveu:
- Como derivar essa equação para descobrir o ápice da parábola?
Não aprendi ainda derivadas, mas dependendo do que for, dá para tentar de outros modos (tem alguns editáveis meus que 'precisavam' de derivadas, mas usei outros modos).
É, não precisa mesmo. Lembrei que, na equação da parábola, o "x" do ápice é sempre "-b/2a". Essa é uma conclusão em que se chega através do uso de derivadas, mas estudantes do segundo grau já têm essa conclusão embaladinha pra usar. É que depois, derivar pra chegar às equações meio que vira um vício.
Pra que serve "descobrir o ápice da parábola" é coisa do próximo capítulo dessa novela...

Pedrø escreveu:
- Inversão do eixo y e uma velocidade que não pode ser negativa: paradoxo?
?
É que eu acho que, num dos capítulos à frente, eu vou chegar à conclusão que a velocidade inicial é uma raiz. Raízes têm que ser positivas. Mas pro personagem pular pra cima, na tela, sendo que a gravidade é positiva, a velocidade inicial tem que ser negativa. E aí, a matemática falhou? Deixa pra lá, vamos resolver a validade da equação, primeiro.

@Vinians:
O âmago desse tutorial é questionar o uso de torricceli pra previsão de posição no game maker em games. Suponha, por enquanto, que não exista deslocamento na horizontal, então v0y == v0. O link que você mostrou é muito bom na vida real, onde podemos usar torricceli sem muito erro.
Quanto a perverter torricceli a meu bel-prazer, já estou calejado Smile .

@Igor KinGamer:
Você também está partindo do pré-suposto que o uso da equação de torricceli é válido, o que é justamente o que eu estou questionando. No step inicial, a velocidade é a velocidade inicial. A aceleração ainda não atuou. Daí, atualiza-se a posição e, em seguida a velocidade e, aí sim, a aceleração atuará. É justamente nessa diferença da vida real que eu suponho que resida a origem do problema: na vida real, a aceleração atua o tempo todo.
Veja mais uma vez sua equação:
y += v+a/2;
Quem coloca isso no step? Eu, pelo menos, não coloco. Se bem que, se for fazer torricelli passar a ser válido, vale a pena mudar minha forma de programar. Deixa eu ver aqui...
FUNCIONA SIM!!!! Torricceli estava certo, afinal! Vou ter que mudar TODAS as minhas engines de plataforma, mas isso simplifica MUITA coisa.

Muito obrigado, tópico resolvido, fim da novela! Que bom que só durou um capítulo, achei que seriam 3 capítulos e que a coisa só iria complicar cada vez mais!
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por Igor KinGamer Sex 09 Dez 2011, 10:47

É, essa história da aceleração atuar o tempo todo na realidade (aliás, tudo atua o tempo todo) é boa pra causar confusão na hora de programar. Mas é aí que o tempo "entra em ação" na equação (ou nas equações): assim como você calcularia onde estaria uma bola, por exemplo, 20 segundos depois de ser solta, aqui você calcula o estado das coisas um step depois do momento atual. A cada step, você responde às perguntas "Onde estará?" e "Qual será a velocidade daqui a um step?".
Igor KinGamer
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por PedroX Sex 09 Dez 2011, 11:12

Mas, se ele se basear em torricceli, vai dar errado.
Não se baseia na equação de Torricelli.
Eu uso aquele método para descobrir o instante em que dois móveis se encontrarão. Daí, eu descubro a velocidade horizontal necessária.
Para descobrir a velocidade vertical, eu determino qual seria a velocidade vertical para que o objeto chegue no ponto (alvo.x, 0), mas eles não podem ter diferença em Y.

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Resolvido]Torricceli (Capítulo 1/2) Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Resolvido]Torricceli (Capítulo 1/2) Empty Re: [Resolvido]Torricceli (Capítulo 1/2)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos