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
gamepad_get_device_countDescrição:Código: Selecionar todos
gamepad_is_supported
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:
O código acima verifica se um gamepad é suportado e armazena o valor de retorno em uma variável global para verificações futuras.Código: Selecionar todos
global.GP = gamepad_is_supported = ();
gamepad_is_connectedDescrição:Código: Selecionar todos
gamepad_get_device_count
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:
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.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; }
O valor retornado é então usado para definir uma matriz global de verdadeiro ou falso, para uso em futuras verificações.
gamepad_get_descriptionDescrição:Código: Selecionar todos
gamepad_is_connected
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:
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.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; }
O valor retornado é então usado para definir uma matriz global de verdadeiro ou falso para uso em futuras verificações.
gamepad_get_button_thresholdDescrição:Código: Selecionar todos
gamepad_get_description
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_set_button_thresholdDescrição:Código: Selecionar todos
gamepad_get_button_threshold
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:
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.Código: Selecionar todos
if gamepad_get_button_threshold (0)! = 0,5 { gamepad_set_button_threshold (0, 0,5); }
gamepad_axis_countDescrição:Código: Selecionar todos
gamepad_set_button_threshold
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:
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.Código: Selecionar todos
if gamepad_get_button_threshold (0)! = 0,5 { gamepad_set_button_threshold (0, 0,5); }
gamepad_axis_valueDescrição:Código: Selecionar todos
gamepad_axis_count
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:
O código acima armazena o número de eixos disponíveis para o gamepad ligado ao dispositivo 0 "ranhura" na variável "eixo".Código: Selecionar todos
axis = gamepad_axis_count(0))
gamepad_button_checkDescrição:Código: Selecionar todos
gamepad_axis_value
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:
O código acima define a velocidade ea direção da instância com base nos valores retornados do controladorCó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;
analógico esquerdo do gamepad ligado ao aparelho "compartimento" 0.
gamepad_button_check_pressedDescrição:Código: Selecionar todos
gamepad_button_check
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:
O código acima irá detectar se o botão "X" (o "X" em um controlador de ps3) está sendo pressionado eCó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; } }
se estiver, ele vai criar uma instância do "obj_Bullet" e definir um alarme.
gamepad_button_check_releasedDescrição:Código: Selecionar todos
gamepad_button_check_pressed
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:
O código acima irá detectar se o botão "start" do gamepad ligado ao "compartimento 0" foi pressionado ou não eCódigo: Selecionar todos
if gamepad_button_check_pressed (0, gp_start) { audio_sound_play (snd_Start, 0, false); room_goto (rm_Level_1); }
mudar de room se tiver.
gamepad_button_countDescrição:Código: Selecionar todos
gamepad_button_check_released
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:
O código acima irá detectar se o botão "select" do gamepad ligado ao "compartimento 0" foi soltado ou não,Código: Selecionar todos
if gamepad_button_check_released (0, gp_select) { audio_sound_play (snd_Button, 0, false); ! global.Pause = global.Pause; }
e alternar a variável global "Pause".
gamepad_button_valueDescrição:Código: Selecionar todos
gamepad_button_count
Esta função irá retornar o número total de botões disponíveis para o gamepad ligado ao dispositivo no "compartimento 0".
Exemplo:
O código acima irá retornar o número de botões disponíveis no gamepad ligado ao "compartimento 0" e armazenar o valorCódigo: Selecionar todos
b_num gamepad_button_count = (0);
na variável "b_num".
gamepad_set_vibrationDescrição:Código: Selecionar todos
gamepad_button_value
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:
O código acima usa o valor de disparo análogo do gamepad ligado ao "compartimento 0" para definir a velocidade da instância.Código: Selecionar todos
speed = gamepad_button_value (0, gp_shoulderrb) * 4;
Lista dos botões de controles no GMS.Descrição:Código: Selecionar todos
gamepad_set_vibration
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:
O código acima poderia ser utilizado (por exemplo) em um evento de colisão para fazer o gamepad ligado ao "compartimento 0"Código: Selecionar todos
if a lives = 0 { gamepad_set_vibration (0, 1, 1); Alarme [0] = room_speed / 2; }
vibrar por meio segundo, com o alarme que está definido sendo usado para desligá-lo novamente, uma vez que o tempo passou.
Constante Descrição
[img(675px,391px)]https://dl.dropboxusercontent.com/u/368 ... ntrole.png[/img]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".