Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 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
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
Analogico controlar image angle
5 participantes
Página 1 de 1
Analogico controlar image angle
Estou tendo dificuldades de logica para resolver um problema aqui com um Joystick.
Quero que o analogico do lado "L" controle a velocidade e a direcão que o player esta indo como se fosse as teclas "W A S D" do teclado em um jogo visto de cima e o analogico do lado "R" interferindo no image_angle como se fosse o mouse,
O meu problema é que o joystick retorna um numero entre -1 e 1 no analogico variando dependendo do precionamento na alavanquinha quando nao esta precionando ele retorna 0.
Criei o post por talvez ja tem algo pronto que me adiantaria um bocado.
Quero que o analogico do lado "L" controle a velocidade e a direcão que o player esta indo como se fosse as teclas "W A S D" do teclado em um jogo visto de cima e o analogico do lado "R" interferindo no image_angle como se fosse o mouse,
O meu problema é que o joystick retorna um numero entre -1 e 1 no analogico variando dependendo do precionamento na alavanquinha quando nao esta precionando ele retorna 0.
Criei o post por talvez ja tem algo pronto que me adiantaria um bocado.
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Re: Analogico controlar image angle
Eu não entendi. O analógico não pode retornar um valor entre -1 e 1, assim não teria nem como pegar a posição dele em relação ao centro. Ele tem que retornar além disso um vetor bidimensional, ou alguma coordenada em 2D pelo menos. Se ele faz isso que eu falei, bastaria fazer essa equação:
- Código:
angulo = acos((vetorX * 0)+(vetorY * 1))
- Código:
comprimento = sqrt((vetorX^2)+(vetorY^2))
vetorX = vetorX/lenght
vetorY = vetorY/lenght
mZIl- Data de inscrição : 10/07/2013
Reputação : 2
Número de Mensagens : 49
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Analogico controlar image angle
Você quer que a velocidade do movimento do personagem seja relativo à posição do controle analógico, ou seja absoluto nas 8 direções principais?
Re: Analogico controlar image angle
Eu tenho que me desculpar, pois eu cometi dois erros. O primeiro é que a função pode ser simplificada pra usar menos processamento. Antes era assim:
O segundo é que a primeira função irá retornar um valor em radiano. Além de que ela só dará o angulo entre 0~180 (Ou de 0pi~1pi). Então para arrumar isso o código inteiro ficaria assim e funcionaria não importando o tipo da input do controle:
Agora explicando o código. A primeira parte é aonde o vetor (Ou as posições do analógico) é "normalizado". Isso faz com que a magnitude (ou o comprimento) dele seja igual a 1. Então a direção do analógico será representada por duas variáveis que se você fizer "sqrt((X^2)+(Y^2))" dará 1. Isso é um vetor unitário, que geralmente é usado para representar rotação, direção e outras coisas.
Na segunda parte, eu pego o ângulo do vetor em relação a um vetor que está "apontando" para cima. Então se o seu analógico estiver para a direita, o ângulo será 90. Como eu disse que o angulo calculado só vai de 0~180, eu vejo se x é negativo, se for, quer dizer que o ângulo será maior que 180. Então eu pego o ângulo e adiciono 180 para dar o valor real.
Eu até daria alguns links, mas a página de vetores da wikipédia é simplesmente impossível de entender, e a maioria dos conteúdos em português fazem todos os cálculos usando equações. Então, se você entende inglês esse link vale ouro:
http://www.wildbunny.co.uk/blog/vector-maths-a-primer-for-games-programmers/
E claro, para usar vetores é muito mais fácil se você usar matrizes. Porém eu não saberia dizer o quão fácil seria adicionar funções extras para usar vetores no GM. Aliás, eu não achei nenhuma função nativa do GM para trabalhar com vetores.
Edit: A função para acos é na verdade arccos, 3 erros agora '-'. Arrumado também.
- Código:
angulo = arccos((vetorX * 0)+(vetorY * 1))
- Código:
angulo = arccos(vetorY)
O segundo é que a primeira função irá retornar um valor em radiano. Além de que ela só dará o angulo entre 0~180 (Ou de 0pi~1pi). Então para arrumar isso o código inteiro ficaria assim e funcionaria não importando o tipo da input do controle:
- Código:
//Primeira parte
comprimento = sqrt((vetorX^2)+(vetorY^2))
vetorX = vetorX/comprimento
vetorY = vetorY/comprimento
//Segunda parte---
if vetorX>=0 {
angulo = radtodeg(arccos(vetorY))
else
angulo = radtodeg(arccos(vetorY)) + 180
}
Agora explicando o código. A primeira parte é aonde o vetor (Ou as posições do analógico) é "normalizado". Isso faz com que a magnitude (ou o comprimento) dele seja igual a 1. Então a direção do analógico será representada por duas variáveis que se você fizer "sqrt((X^2)+(Y^2))" dará 1. Isso é um vetor unitário, que geralmente é usado para representar rotação, direção e outras coisas.
Na segunda parte, eu pego o ângulo do vetor em relação a um vetor que está "apontando" para cima. Então se o seu analógico estiver para a direita, o ângulo será 90. Como eu disse que o angulo calculado só vai de 0~180, eu vejo se x é negativo, se for, quer dizer que o ângulo será maior que 180. Então eu pego o ângulo e adiciono 180 para dar o valor real.
Eu até daria alguns links, mas a página de vetores da wikipédia é simplesmente impossível de entender, e a maioria dos conteúdos em português fazem todos os cálculos usando equações. Então, se você entende inglês esse link vale ouro:
http://www.wildbunny.co.uk/blog/vector-maths-a-primer-for-games-programmers/
E claro, para usar vetores é muito mais fácil se você usar matrizes. Porém eu não saberia dizer o quão fácil seria adicionar funções extras para usar vetores no GM. Aliás, eu não achei nenhuma função nativa do GM para trabalhar com vetores.
Edit: A função para acos é na verdade arccos, 3 erros agora '-'. Arrumado também.
mZIl- Data de inscrição : 10/07/2013
Reputação : 2
Número de Mensagens : 49
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Analogico controlar image angle
Cara, da pra fazer muito mais simples que isso. Muito mais simples mesmo.
Nem vi se sua matemática tá certa ou não.. de fato, usando uma linguagem mais "baixo nível", provavelmente deveria usar matemática nesse nível.
Mas o GameMaker da recurso pra fazer de uma forma BEM mais simples. Eu só quero que ele responda qual forma ele realmente quer, e eu dou uma solução *bem* mais simples. Se eu não estou enganado, dá pra resolver isso com 3 linhas de código
Nem vi se sua matemática tá certa ou não.. de fato, usando uma linguagem mais "baixo nível", provavelmente deveria usar matemática nesse nível.
Mas o GameMaker da recurso pra fazer de uma forma BEM mais simples. Eu só quero que ele responda qual forma ele realmente quer, e eu dou uma solução *bem* mais simples. Se eu não estou enganado, dá pra resolver isso com 3 linhas de código
Re: Analogico controlar image angle
Entendo rs. Eu já imaginava que teria algum modo mais simples de se fazer isso no Game Maker xD. Irei deixar alguém que realmente entenda o GM responder antes de "baixar o nível" assim tanto rsshatterhand2 escreveu:Cara, da pra fazer muito mais simples que isso. Muito mais simples mesmo.
Nem vi se sua matemática tá certa ou não.. de fato, usando uma linguagem mais "baixo nível", provavelmente deveria usar matemática nesse nível.
Mas o GameMaker da recurso pra fazer de uma forma BEM mais simples. Eu só quero que ele responda qual forma ele realmente quer, e eu dou uma solução *bem* mais simples. Se eu não estou enganado, dá pra resolver isso com 3 linhas de código
mZIl- Data de inscrição : 10/07/2013
Reputação : 2
Número de Mensagens : 49
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Analogico controlar image angle
No caso de programação, "baixo nível" na verdade é mais elegante e elaborado
Re: Analogico controlar image angle
desculpe a demora é que minha net ficou fora do ar ai nem pude testar os codigos e agora estou na faculde via celular so vou poder testar ali pelas meia noite quando chegar em casa.shatterhand2 escreveu:Você quer que a velocidade do movimento do personagem seja relativo à posição do controle analógico, ou seja absoluto nas 8 direções principais?
Sim a velocidade pode ser relativa a posicao do analogico.
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Re: Analogico controlar image angle
Para o analógico direito:
- Código:
image_angle = point_direction(0, 0, gamepad_axis_value(1, gp_axisrh), gamepad_axis_value(1, gp_ahisrv));
- Código:
var vh, vv;
vh = gamepad_axis_value(1, gp_axislh);
vv = gamepad_axis_value(1, gp_axislv);
direction = point_direction(0, 0, vh, vv);
hspeed = lengthdir_x(vh, direction)*5;
vspeed = lengthdir_y(vv, direction)*5;
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:
Re: Analogico controlar image angle
Experimenta fazer isso no step:
hspeed = 4*gamepad_axis_value(0,gp_axislh)
vspeed = 4*gamepad_axis_value(0,gp_axislv)
image_angle = direction
Você vai precisar fazer um ajuste pra considerar a deadzone do controle, mas acho que a partir dai você já pode resolver o seu problema
EDIT: ops... agora que eu entendi direito o que você queria, você quer usar as duas alavancas.
perae
EDIT2:
Tenta isso:
hspeed = gamepad_axis_value(0,gp_axisrh)
vspeed = gamepad_axis_value(0,gp_axisrv)
image_angle = direction
x -= hspeed
y -= vspeed
x+= 4*gamepad_axis_value(0,gp_axislh)
y+= 4*gamepad_axis_value(0,gp_axislv)
É gambiarra braba, e você *vai* precisar ajustar pra considerar a deadzone, principalmente da alavanca direita.. Mas funciona, e você coloca o GameMaker pra fazer as operações matemáticas pra você.
hspeed = 4*gamepad_axis_value(0,gp_axislh)
vspeed = 4*gamepad_axis_value(0,gp_axislv)
image_angle = direction
Você vai precisar fazer um ajuste pra considerar a deadzone do controle, mas acho que a partir dai você já pode resolver o seu problema
EDIT: ops... agora que eu entendi direito o que você queria, você quer usar as duas alavancas.
perae
EDIT2:
Tenta isso:
hspeed = gamepad_axis_value(0,gp_axisrh)
vspeed = gamepad_axis_value(0,gp_axisrv)
image_angle = direction
x -= hspeed
y -= vspeed
x+= 4*gamepad_axis_value(0,gp_axislh)
y+= 4*gamepad_axis_value(0,gp_axislv)
É gambiarra braba, e você *vai* precisar ajustar pra considerar a deadzone, principalmente da alavanca direita.. Mas funciona, e você coloca o GameMaker pra fazer as operações matemáticas pra você.
Re: Analogico controlar image angle
Ate hoje não iniciei meu projeto do concurso yes por causa que essa movimentação é essencial no projeto, mas nada faz meu game maker reconhecer meu contole como um gamepad ele so reconhece como joystick, comprei outro um controle sem fio hoje R$60.00 O_o para ver se funcionava mas não adiantou em nada, não consigui testar os codigos de você pois eles usam so funcões do gamepad e não do joystick :'(
Mas vou continuar tentando achar alguma solução para isso muito obrigado pelas respostas e assim que eu conseguir um "Gamepad" eu volto a comentar aqui neste post!
Mas vou continuar tentando achar alguma solução para isso muito obrigado pelas respostas e assim que eu conseguir um "Gamepad" eu volto a comentar aqui neste post!
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Re: Analogico controlar image angle
Cara, o que você falou não faz o menor sentido.
Por acaso quando você testa o jogo, dá um erro antes de faltar um DLL, e depois o jogo funciona?
Qual é a sua versão do GMS?
Por acaso quando você testa o jogo, dá um erro antes de faltar um DLL, e depois o jogo funciona?
Qual é a sua versão do GMS?
Re: Analogico controlar image angle
Sim oque eu falei realmente é oque esta acontecendo aqui comigo :/
Uso a versão
GMStudio-Installer-1.1.1013
Mas ja tentei na versão
GMStudio-Installer-1.2.1130
e nada de reconhecer meu controle como gamepad
não sei oque eu faço O_o ...
Uso a versão
GMStudio-Installer-1.1.1013
Mas ja tentei na versão
GMStudio-Installer-1.2.1130
e nada de reconhecer meu controle como gamepad
não sei oque eu faço O_o ...
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Re: Analogico controlar image angle
Vejam o tópico:
http://gmc.yoyogames.com/index.php?showtopic=570122
Parece que isso é esperado mesmo. As novas funções são experimentais.
http://gmc.yoyogames.com/index.php?showtopic=570122
Parece que isso é esperado mesmo. As novas funções são experimentais.
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:
Re: Analogico controlar image angle
Pedro eu visitei este topico que você citou vi comentarios sobre o Xinput, pesquisei a respeito e consegui resolver parte do meu problema agora o meu game maker studio ja consegue reconhecer os meus dois controles (Meu Joypad e Me Joystick Hehe) e certamente os codigos que foram citados acima irão resolver meu outro problema, amanha inicio os testes sobre o image_angle pelo analogico e a movimentação tbm.
Assim que conseguir o resultado esperado volto a comentar...
Muito obrigado pelo empenho de todos aqui neste topico!
Assim que conseguir o resultado esperado volto a comentar...
Muito obrigado pelo empenho de todos aqui neste topico!
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Re: Analogico controlar image angle
Veja minha resposta nesse tópico https://gmbr.forumeiros.com/t27742-como-o-gms-reconhece-o-controle-do-ouya#205877
Re: Analogico controlar image angle
Gabriel, o código do Kabeção resolve o problema. Mas, mesmo assim, gostaria de saber como você resolveu, se puder informar.
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:
Re: Analogico controlar image angle
No meu caso acredito que a solução apresentada pelo cabeção não seria legal pois presiso usar as funções do gamepad para controlar o objeto pelos analogico por exemplo:
vh = gamepad_axis_value(1, gp_axislh);
vv = gamepad_axis_value(1, gp_axislv);
Nas funções de joystick não funcionaria o codigo acima (o codigo foi só um exemplo não estou usando ele)
Poderia achar uma solução para preencher essas necessidades com um joystick mas acredito que daria bastante trabalho.
A solução que encontrei foi usar um emulador que encontrei na net o "Xinput"
segundo posts que li ele faz com que qualquer controle joystick, joypad, gamepad que esteja conectado no pc seja reconhecido como um controle do xbox então as funções do Gamepad do GM:S vão funcionar mesmo em um joystick.
Para usar baixei uma versão na net configurei e é so colocar na pasta onde esta o execultavél do jogo, no caso do runner para funcionar quando vamos testar no Gm:S eu coloquei os arquivos na pasta raiz do gms (C:\Users\Gabriel\AppData\Roaming\GameMaker-Studio) e tudo funcionou perfeitamente)
Ai para o final do concurso posso enviar os arquivos do xinput junto ao exe do jogo se caso precisar, mas certamente quando for compilado o apk para o ouya as funções gamepad vão funcionar normalmente.
Não vou deixar o link dos arquivos por que não sei se é um programa pago ou free O_o pesquisei um pouco aqui não descobri nada a respeito, mas vou deixar um print dos arquivos, e se alguém quiser entre em contato comigo pelo face ou por mp.
vh = gamepad_axis_value(1, gp_axislh);
vv = gamepad_axis_value(1, gp_axislv);
Nas funções de joystick não funcionaria o codigo acima (o codigo foi só um exemplo não estou usando ele)
Poderia achar uma solução para preencher essas necessidades com um joystick mas acredito que daria bastante trabalho.
A solução que encontrei foi usar um emulador que encontrei na net o "Xinput"
segundo posts que li ele faz com que qualquer controle joystick, joypad, gamepad que esteja conectado no pc seja reconhecido como um controle do xbox então as funções do Gamepad do GM:S vão funcionar mesmo em um joystick.
Para usar baixei uma versão na net configurei e é so colocar na pasta onde esta o execultavél do jogo, no caso do runner para funcionar quando vamos testar no Gm:S eu coloquei os arquivos na pasta raiz do gms (C:\Users\Gabriel\AppData\Roaming\GameMaker-Studio) e tudo funcionou perfeitamente)
Ai para o final do concurso posso enviar os arquivos do xinput junto ao exe do jogo se caso precisar, mas certamente quando for compilado o apk para o ouya as funções gamepad vão funcionar normalmente.
Não vou deixar o link dos arquivos por que não sei se é um programa pago ou free O_o pesquisei um pouco aqui não descobri nada a respeito, mas vou deixar um print dos arquivos, e se alguém quiser entre em contato comigo pelo face ou por mp.
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Re: Analogico controlar image angle
Como não tenho controle (na verdade o fio), estou usando o teclado mesmo para simular no Windows. Estou fazendo de forma que fique fácil remover depois.
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:
Tópicos semelhantes
» Como Fazer Image Angle
» Image Angle Point Direction
» Como controlar animações
» joystick como controlar
» [Resolvido]Controlar volume
» Image Angle Point Direction
» Como controlar animações
» joystick como controlar
» [Resolvido]Controlar volume
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos