Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

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

Tutoriais, videoaulas, guias e downloads para te ajudar nos estudos.
Avatar do usuário
Tutoriais & Aulas
Colaborador
Colaborador
Reações: 0
Mensagens: 110

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

Mensagem por Tutoriais & Aulas » Sex Abr 29, 2016 9:22 am

Autor original: CRP-Max
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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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: Selecionar todos

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)
[img(675px,391px)]https://dl.dropboxusercontent.com/u/368 ... ntrole.png[/img]

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".

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante