Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
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 : 45
Número de Mensagens : 403
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 : 45
Número de Mensagens : 403
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 : 45
Número de Mensagens : 403
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 : 45
Número de Mensagens : 403
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 : 45
Número de Mensagens : 403
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 : 45
Número de Mensagens : 403
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
» Image Angle Point Direction
» Como Fazer Image Angle
» Como controlar animações
» joystick como controlar
» [Resolvido]Controlar volume
» Como Fazer Image Angle
» 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