[Lista]Descrição dos comandos de gamepad do GMS.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Lista]Descrição dos comandos de gamepad do GMS.

Mensagem por CRP-Max em Dom 08 Set 2013, 11:43

Como temos um concurso sobre o OUYA começando, acho que muita gente vai migrar para o Game Maker Studio.
Assim sendo, resolvi listar e traduzir todos os comandos usados, para uso do controle (gamepad) do OUYA.

Lista de comandos para gamepad do GMS.

gamepad_is_supported

Código:
gamepad_is_supported
Descrição:

Retorna se gamepads são suportadas pela plataforma de destino.

Com esta função, você pode descobrir se a plataforma de destino suporta gamepads (retorna true) ou não (retorna false).

Exemplo:

Código:
global.GP = gamepad_is_supported = ();
O código acima verifica se um gamepad é suportado e armazena o valor de retorno em uma variável global para verificações futuras.
gamepad_get_device_count

Código:
gamepad_get_device_count
Descrição:

Retorna o número de gamepads conectados ou o número de slots disponíveis para gamepads.
Esta função irá lhe dizer uma de duas coisas. Ou o número de gamepads conectados, ou o número de "slots" disponíveis
para gamepads para ser ligado. O valor de retorno real dependerá da plataforma e a configuração interna da plataforma e que,
como tal, esta função deve ser utilizado em conjunto com a função "gamepad_is_connected" para certificar-se do número exato
de controles ligados a qualquer momento.

Exemplo:

Código:
var gp_num = gamepad_get_device_count = ();
  for (var i = 0; i <gp_num; i + +;)
     {
     if gamepad_is_connected (i) global.gp [i] = true else global.gp [i] = false;
     }
Este loop de código acima, verifica os gamepads disponíveis (ou slots de gamepad) e então retorna cada um para um gamepad ligado.
O valor retornado é então usado para definir uma matriz global de verdadeiro ou falso, para uso em futuras verificações.
gamepad_is_connected

Código:
gamepad_is_connected
Descrição:

Retorna se um determinado gamepad está conectado.
Esta função irá retornar se um gamepad está ligado a um determinado "compartimento" (retorna true) ou não (retorna false).
Você usaria normalmente esta função em conjunto com a função "gamepad_get_device_count" para obter o número correto de gamepads
disponíveis e / ou gamepad "slots".

Exemplo:

Código:
var gp_num = gamepad_get_device_count = ();
  for (var i = 0; i <gp_num; i + +;)
     {
     if gamepad_is_connected (i) global.gp [i] = true else global.gp [i] = false;
     }
Este loop de código acima, verifica os gamepads disponíveis (ou slots de gamepad) e então retorna cada um para um gamepad ligado.
O valor retornado é então usado para definir uma matriz global de verdadeiro ou falso para uso em futuras verificações.
gamepad_get_description

Código:
gamepad_get_description
Descrição:

Retorna uma string descritiva para o dado gamepad.
Esta função irá retornar uma string com a descrição do gamepad, por exemplo, um controlador de PS3 pode retornar uma informação
semelhante ao "PLAYSTATION (R) 3 Controller", ou um controlador de XBox360 poderia retornar "Xbox 360 Controller
(XInput PADRÃO GAMEPAD) ". Esta cadeia é dependente de hardware e o valor retornado, dependerá dos joysticks conectados, no
dispositivo "compartimento" que está sendo verificado.

Exemplo:

Código:
var gp_num = gamepad_get_device_count = ();
  for (var i = 0; i <gp_num; i + +;)
     {
     gamepad_is_connected se (i)
        {
        draw_text (32, 32 + (i * 32), gamepad_get_description (i));
        }
     else
        {
        draw_text (32, 32 + (i * 32): "Nenhum controle detectado.");
        }
     }
gamepad_get_button_threshold

Código:
gamepad_get_button_threshold
Descrição:

Retorna a configuração limite dos botões analógicos.
Esta função pode ser utilizada para detectar a configuração do limite de corrente dos botões analógicos, para um determinado
dispositivo. O limite padrão para todos os botões analógicos é de 0,5, com a faixa de ser de 0 a 1.
O threshold define em que ponto o botão é considerado como sendo "pressionado" para os jogos que necessitam deles para atuar
como um botão digital.

Exemplo:

Código:
if gamepad_get_button_threshold (0)! = 0,5
     {
     gamepad_set_button_threshold (0, 0,5);
     }
O código acima verifica o limite de botão analógico do gamepad ligado ao "compartimento 0" e se não é o valor padrão de 0.5, ele é definido para esse valor.
gamepad_set_button_threshold

Código:
gamepad_set_button_threshold
Descrição:

Define o limite para os botões analógicos do dispositivo dado.
Esta função pode ser usada para definir a configuração actual limite dos botões analógicos para um determinado dispositivo.
O limite padrão para todos os botões analógicos é de 0,5, com a faixa de ser de 0 a 1.
O threshold define em que ponto o botão é considerado como sendo "pressionado" para os jogos que necessitam deles para atuar
como um botão digital.

Exemplo:

Código:
if gamepad_get_button_threshold (0)! = 0,5
     {
     gamepad_set_button_threshold (0, 0,5);
     }
O código acima verifica o limite de botão analógico do gamepad ligado ao "compartimento 0" e se não é o valor padrão de 0.5, ele é definido para esse valor.
gamepad_axis_count

Código:
gamepad_axis_count
Descrição:

Retorna quantos botões são eixos, para o dispositivo informado.
Esta função irá retornar o número de controles "eixo" no dispositivo que está sendo verificado.
Esses controles são a direção "direcionais analogicos" na maioria dos controladores.

Exemplo:

Código:
axis = gamepad_axis_count(0))
O código acima armazena o número de eixos disponíveis para o gamepad ligado ao dispositivo 0 "ranhura" na variável "eixo".
gamepad_axis_value

Código:
gamepad_axis_value
Descrição:

Retorna um valor com base na posição do eixo atual.
Você pode usar essa função para obter o valor dos diferentes eixos de um determinado gamepad.
O valor de retorno será entre -1 e 1 para cada um dos eixos horizontal e vertical disponíveis.

Exemplo:

Código:
direction = point_direction (0, 0, gamepad_axis_value (0, gp_axislh), gamepad_axis_value (0, gp_axislv));
  hspeed = lengthdir_x (gamepad_axis_value (0, gp_axislh), direção) * 5;
  vspeed = lengthdir_y (gamepad_axis_value (0, gp_axislv), direção) * 5;
O código acima define a velocidade ea direção da instância com base nos valores retornados do controlador
analógico esquerdo do gamepad ligado ao aparelho "compartimento" 0.
gamepad_button_check

Código:
gamepad_button_check
Descrição:

Retorna se um determinado botão gamepad está atualmente presionado.
Esta função irá retornar true ou false, dependendo se o botão do gamepad é pressionado ou não.

Exemplo:

Código:
if gamepad_button_check (0, gp_face1)
     {
     if canshoot = true
        {
        audio_sound_play (snd_Shoot, 0, false);
        instance_create (x, y, obj_Bullet)
        canshoot = false;
        Alarme [0] = room_speed / 2;
        }
     }
O código acima irá detectar se o botão "X" (o "X" em um controlador de ps3) está sendo pressionado e
se estiver, ele vai criar uma instância do "obj_Bullet" e definir um alarme.
gamepad_button_check_pressed

Código:
gamepad_button_check_pressed
Descrição:

Retorna se um determinado botão foi pressionado.
Esta função retornará verdadeiras ou falsas, dependendo se a tecla dada gamepad é detectada como tendo sido pressionado ou não.
Note que esta função só será desencadeada uma vez para o botão na primeira vez que for pressionado.
Pois para acionar novamente o botão primeiro deve ser soltado e então re-pressionado.
Se você precisa verificar um aperto contínuo do botão, você deve usar a função gamepad_button_check.

Exemplo:

Código:
if gamepad_button_check_pressed (0, gp_start)
     {
     audio_sound_play (snd_Start, 0, false);
     room_goto (rm_Level_1);
     }
O código acima irá detectar se o botão "start" do gamepad ligado ao "compartimento 0" foi pressionado ou não e
mudar de room se tiver.
gamepad_button_check_released

Código:
gamepad_button_check_released
Descrição:

Esta função irá retornar true ou false, caso o botão é detectado como tendo sido solto ou não.
Note que esta função só será desencadeada uma vez para o botão no momento em que foi lançado.
Para isso para desencadear novamente o botão tem de primeiro ser pressionado e depois soltado novamente.

Exemplo:

Código:
if gamepad_button_check_released (0, gp_select)
     {
     audio_sound_play (snd_Button, 0, false);
     ! global.Pause = global.Pause;
     }
O código acima irá detectar se o botão "select" do gamepad ligado ao "compartimento 0" foi soltado ou não,
e alternar a variável global "Pause".
gamepad_button_count

Código:
gamepad_button_count
Descrição:

Esta função irá retornar o número total de botões disponíveis para o gamepad ligado ao dispositivo no "compartimento 0".

Exemplo:

Código:
b_num gamepad_button_count = (0);
O código acima irá retornar o número de botões disponíveis no gamepad ligado ao "compartimento 0" e armazenar o valor
na variável "b_num".
gamepad_button_value

Código:
gamepad_button_value
Descrição:

Com esta função, você pode obter o valor atual de um botão analógico, de 0 a 1, onde 0 é nenhuma pressão e 1 é uma pressão total.

Exemplo:

Código:
speed = gamepad_button_value (0, gp_shoulderrb) * 4;
O código acima usa o valor de disparo análogo do gamepad ligado ao "compartimento 0" para definir a velocidade da instância.
gamepad_set_vibration

Código:
gamepad_set_vibration
Descrição:

Com esta função, você pode definir a vibração dos motores gamepad, com qualquer motor, utilizando um valor
de 0 (sem vibração) a 1 (vibração completa).
Note-se que não há limite de tempo para essa função, então você vai precisar usar uma variável ou um alarme para parar a
vibração (conjunto de motores a 0) depois de um determinado tempo senão o gamepad vai continuar a vibrar por
tempo indeterminado.

Nota: Esta função só está disponível para o módulo padrão do Windows alvo.

Exemplo:

Código:
if a lives = 0
     {
     gamepad_set_vibration (0, 1, 1);
     Alarme [0] = room_speed / 2;
     }
O código acima poderia ser utilizado (por exemplo) em um evento de colisão para fazer o gamepad ligado ao "compartimento 0"
vibrar por meio segundo, com o alarme que está definido sendo usado para desligá-lo novamente, uma vez que o tempo passou.
Lista dos botões de controles no GMS.

Constante         Descrição

gp_face1          //botão Top 1 (este mapeia para a "A" em um controlador de Xbox 360 e da cruz em um controlador de PS3)
gp_face2          //botão Top 2 (este mapeia para a "B" em um controlador de Xbox 360 eo círculo em um controlador de PS3)
gp_face3          //botão Top 3 (este mapeia para o "X" em um controlador de Xbox 360 e da praça em um controlador de PS3)
gp_face4          //botão Top 4 (este mapeia para o "Y" de um controlador de Xbox 360 eo triângulo em um controlador de PS3)
gp_shoulderl     //botão esquerdo "L1"
gp_shoulderr     //botão direito "R1"
gp_shoulderrb   //gatilho esquerdo "L2"
gp_shoulderrb   //gatilho direito "R2"
gp_select         //botão select
gp_start          //botão start
gp_stickl          //analógico esquerdo pressionado (como um botão)
gp_stickr          //stick direito pressionado (como um botão)
gp_padu           //D-pad para cima
gp_padd           //D-pad para baixo
gp_padl            //D-pad esquerdo
gp_padr           //D-pad para a direita
gp_axislh          //Esquerda vara eixo horizontal (analógico)
gp_axislv          //Esquerda vara eixo vertical (analógico)
gp_axisrh          //Direito vara eixo horizontal (analógico)
gp_axisrv          //direito furar eixo vertical (analógico)

Algumas considerações em relação ao OUYA:

1º O primeiro compartimento reconhecido no OUYA é o "1", o "0" não funciona.

2º O controle do OUYA não tem função de vibração, além de que os comandos do GMS são somente para o Windows.

3º O controle do OUYA não tem os botões "select" e "start".

4º Ainda não encontrei, o comando para o botão central do controle, mas assim que descobrir posto aqui.


Tags: "OUYA", "controle", "gamepad", "criar", "teclas", "botões", "analogico".

CRP-Max

Ranking : Nota C
Número de Mensagens : 819
Idade : 41
Data de inscrição : 28/10/2008
Notas recebidas : C
Reputação : 29
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Lista]Descrição dos comandos de gamepad do GMS.

Mensagem por Alex FC em Dom 08 Set 2013, 13:41

Ótimo CRP-Max!

Acho que vou participar do concurso e essa era uma das minhas dúvidas.

Esclareceu muita coisa pra mim e com certeza vai ajudar muita gente Happy.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Lista]Descrição dos comandos de gamepad do GMS.

Mensagem por Luan Maia em Dom 22 Set 2013, 00:06

Eu testei como gamepad e deu como não conectado, o meu joystick, então testei como joystick e deu como conectado. Será que eu fiz algo de errado? Se não, será que dá para eu usar essas funções de gamepad do mesmo jeito?
Acredito que não, mas não custa nada perguntar. Smile

Usei isso para ver se reconhecia como gamepad:
Código:

var gp_num = gamepad_get_device_count();
for (var i = 0; i < gp_num; i ++;)
{
   if gamepad_is_connected (i) global.gp [i] = true else global.gp [i] = false;
   draw_set_font(font0);
   if (global.gp [i] == true)  draw_text(100,100,"O gamepad "+string(i)+" está conectado!");
   else    draw_text(100,i/2*100,"O gamepad "+string(i)+" não está conectado!");
}
E usei isso para ver se reconhecia como joystick:
Código:

for (var i = 1; i < 3; i ++;)
{
    draw_set_font(font0);
    if (joystick_exists(i))  draw_text(20,i/2*100,"O joystick "+string(i)+" está conectado e o nome dele é "+joystick_name(i)+"!");
    else    draw_text(20,i/2*100,"O joystick "+string(i)+" não está conectado!");
}

Luan Maia

Ranking : Sem avaliações
Número de Mensagens : 399
Idade : 20
Data de inscrição : 01/07/2010
Notas recebidas : D+C+C+D
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://blogluanmaia.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: [Lista]Descrição dos comandos de gamepad do GMS.

Mensagem por Zero. em Ter 07 Jan 2014, 02:18

O meu aconteceu o msm do lucas maia, só reconheceu como joystick.

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Lista]Descrição dos comandos de gamepad do GMS.

Mensagem por Conteúdo patrocinado Hoje à(s) 11:43


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum