Nivel:Intermediario
Créditos especiais à: hiperbite,Mathy220 e LucasMan
Aqui estão alguns comandos básicos sobre GML, vejam:
Comando básicos:
if: Esse código serve para quando você for fazer alguma coisa, ou quando acontecer alguma coisa. EX:
var: Esse código serve para criar uma variável, veja:
score: Bom, acho que não é preciso dizer nada, esse código define a pontuação. Ex:
lives: É a mesma coisa de score, só que aqui são as vidas
false: Esse código é como uma execusão falsa, exemplo:
gravity: O nome já diz, esse comando define a gravidade, veja um exemplo:
sprite_index: Esse comando mostra uma sprite, veja um exemplo:
instance_destroy(): Esse comando é para destruir um objeto, veja um pequeno exemplo:
instance_create: Comando utilizado para criar uma instância (objeto)
image_speed: Controle da velocidade da imagem, veja:
Comandos do teclado:
Setas:
keyboard_check(vk_up)// Seta para cima
keyboard_check(vk_down)// Seta para baixo
keyboard_check(vk_left)// Seta para a esquerda
keyboard_check(vk_right)// Seta para a direita
keyboard_check(vk_space)// Tecla barra de espaços
Letras:
(keyboard_check(ord('X'))// para você mudar as teclas apenas mude a letra X para a tecla que você deseja
Outros
hspeed*=-1: esse código serve para inverter uma velocidade. Exemplo:
draw_text: Escreve um texto, veja um exemplo:
view_xview e view_yview: Esse código serve para uma sprite seguir a tela. Ex:
Já disse muitos comandos, agora vamos criar alguns códigos:
Contato com o chão:
Agora aqui vai umas dicas para criação de inimigos.
1º- Inimigo comum
Vamos lá pessoal para a primeira matéria, não sou muito bom com explicações mas vou tentar, vamos começar fazendo a AI de um inimigo para seu jogo, esse inimigo é aquele clássico que anda de um lado para o outro.
Primeiro crie as sprites do inimigo, uma chamada " inimigo_esquerda" e outra chamada " inimigo_direita" (Sem aspas).Pois se você escrever algo errado o script vai acusar um erro e o jogo não vai funcionar corretamente, Agora, crie um bloco chamado "Wall" ou como quiser, esse bloco sera sólido e terá que ficar invisível, então nas propriedades do bloco desmarque a opção visible (para que ele não apareça no jogo ) pois ele será o bloco que fará seu inimigo bater e voltar.
Agora que criamos os sprites vamos para a segunda parte, vamos criar um objeto para o inimigo, coloque o nome que quiser nele e em Create coloque esses códigos pois as variáveis vão ser ativadas no inicio do objeto, pois Create é o inicio das ações do objeto:
Clique na seta virada para a direita, em Speed coloque 3 e não marque a opção Relative, agora clique em Ok.
Crie um evento Step e escreva o código:
Já estamos no final, crie um evento colision com o Wall e escreva:
Logo depois:
Agora que terminamos vamos criar o objeto chão, pois se não tiver esse objeto o seu inimigo vai cair e sumir na tela, agora crie um evento colision do inimigo com o objeto chao e escreva:
2º- inimigo com IA
Com esse código o inimigo ira pular quando você se aproximar dele, ele também pode ser usado para outras coisas como atirar,segir o personagem mas isso vou explicar mais abaixo.
IA básico:
IA simples:
Evento Create:
Alarm0:
Se você quiser que o inimigo faça todas as ações juntas faça o seguinte crie o mesmo código de antes, esse:
Agora um efeito simples de fade sem usar transição de rooms...
ara fazer um efeito de escurecer/clarear a tela manualmente basicamente vc precisará desenhar um retângulo do tamanho da tela e mudar a transparência dele.
Para começar, crie um obj que irá controlar o efeito. Vou chama-lo de obj_controle. Nesse oj, adicione um evento create e crie duas variaveis para indicar o nível de opacidade e se o efeito está ligado ou não.
Obs: O nível máximo de opacidade é 1, onde estará com toda a cor, quanto menor o valor, mais transparente.
Agora vamos trabalhar no evento draw para desenhar nosso retângulo...
Iremos usar as seguintes funções:
Agora temos que criar um jeito de ligar e desligar a transparência, para testar, adicione dois eventos key press, eu usei A e S para ligar e desligar, respectivamente.
Evento A:
Já definimos o desenho e um sistema de teste para ligar e desligar, mas é agora que iremos criar o efeito de transição fazendo com que fique transparente aos poucos. Adicione um evento step e nele coloque as seguintes condições.
Obrigado pela atenção e desfrutem :lol:
Créditos especiais à: hiperbite,Mathy220 e LucasMan
Aqui estão alguns comandos básicos sobre GML, vejam:
Comando básicos:
if: Esse código serve para quando você for fazer alguma coisa, ou quando acontecer alguma coisa. EX:
- Código:
if keyboard_check(vk_up)
room_goto(room2) //esse é um exemplo, quando a seta para cima for pressionada irá para a room2
var: Esse código serve para criar uma variável, veja:
- Código:
var_(nome da variável)=true
score: Bom, acho que não é preciso dizer nada, esse código define a pontuação. Ex:
- Código:
//aqui estamos inserindo 10 pontos
score+=10
lives: É a mesma coisa de score, só que aqui são as vidas
false: Esse código é como uma execusão falsa, exemplo:
- Código:
//Aqui será pressionada a seta para direita, então a var_parado será falsa e a var_direita será verdadeira
if keyboard_check(vk_right) and not keyboard_check(vk_left)
{
var_parado = false
var_direita = true
}
gravity: O nome já diz, esse comando define a gravidade, veja um exemplo:
- Código:
gravity = 0.75
sprite_index: Esse comando mostra uma sprite, veja um exemplo:
- Código:
// esse é apenas um exemplo, não tente usar esse código
if keyboard_check(vk_down)
sprite_index = spr_player
instance_destroy(): Esse comando é para destruir um objeto, veja um pequeno exemplo:
- Código:
// caso a seta para esquerda seja pressionada o objeto que está executando esse código será destruído
if keyboard_check_pressed(vk_left)
instace_destroy();
instance_create: Comando utilizado para criar uma instância (objeto)
image_speed: Controle da velocidade da imagem, veja:
- Código:
image_speed=0.25
Comandos do teclado:
Setas:
keyboard_check(vk_up)// Seta para cima
keyboard_check(vk_down)// Seta para baixo
keyboard_check(vk_left)// Seta para a esquerda
keyboard_check(vk_right)// Seta para a direita
keyboard_check(vk_space)// Tecla barra de espaços
Letras:
(keyboard_check(ord('X'))// para você mudar as teclas apenas mude a letra X para a tecla que você deseja
Outros
hspeed*=-1: esse código serve para inverter uma velocidade. Exemplo:
- Código:
//crie um evento colison do player com a parede e escreva o comando citado acima.
draw_text: Escreve um texto, veja um exemplo:
- Código:
// fica escrito time na room
draw_text(280,25,time);
view_xview e view_yview: Esse código serve para uma sprite seguir a tela. Ex:
- Código:
// o objeto que está executando esse código irá seguir a room.
view_xview+100
view_yview+100
Já disse muitos comandos, agora vamos criar alguns códigos:
Contato com o chão:
- Código:
// esse código é para o contato do player com o chão, a velocidade muda para 0
move_contact_solid(direction,8)
vspeed = 0
- Código:
//código bem simples, crie um evento colision de um inimigo com um bloco.
if sprite_index=spr_inimigo_esquerda
{
sprite_index=spr_inimigo_direita;
}
else
{
sprite_index=spr_inimigo_esquerda;
}
- Código:
// muda para a room0
room_goto(room0)
Agora aqui vai umas dicas para criação de inimigos.
1º- Inimigo comum
Vamos lá pessoal para a primeira matéria, não sou muito bom com explicações mas vou tentar, vamos começar fazendo a AI de um inimigo para seu jogo, esse inimigo é aquele clássico que anda de um lado para o outro.
Primeiro crie as sprites do inimigo, uma chamada " inimigo_esquerda" e outra chamada " inimigo_direita" (Sem aspas).Pois se você escrever algo errado o script vai acusar um erro e o jogo não vai funcionar corretamente, Agora, crie um bloco chamado "Wall" ou como quiser, esse bloco sera sólido e terá que ficar invisível, então nas propriedades do bloco desmarque a opção visible (para que ele não apareça no jogo ) pois ele será o bloco que fará seu inimigo bater e voltar.
Agora que criamos os sprites vamos para a segunda parte, vamos criar um objeto para o inimigo, coloque o nome que quiser nele e em Create coloque esses códigos pois as variáveis vão ser ativadas no inicio do objeto, pois Create é o inicio das ações do objeto:
- Código:
Gravi_dade = true // você pode dar o nome que quiser para a variável
pa_rado = true
direi_ta = true
velo_cidade = 4
- Código:
image_speed=0.55 // você também pode mudar a velocidade, a que te agrada melhor,ele muda a velocidade dos sprites
Clique na seta virada para a direita, em Speed coloque 3 e não marque a opção Relative, agora clique em Ok.
Crie um evento Step e escreva o código:
- Código:
//AQUI VOCÊ DEFINE A GRAVIDADE
if place_free(x,y+1)
{
gravi_dade = false
gravity = 0.75
}
else
{
gravi_dade= true
gravity = 0
}
//LIMITAR VELOCIDADE DE QUEDA
if (vspeed > 10) {vspeed = 10}
Já estamos no final, crie um evento colision com o Wall e escreva:
- Código:
if sprite_index=spr_inimigo_direita
{
sprite_index=spr_inimigo_esquerda;
}
else
{
sprite_index=spr_inimigo_direita;
}
Logo depois:
- Código:
hspeed*=-1;//isso inverte a velocidade ao bater no Wall,( hspeed )esse código é para inverter somente na horizontal.
Agora que terminamos vamos criar o objeto chão, pois se não tiver esse objeto o seu inimigo vai cair e sumir na tela, agora crie um evento colision do inimigo com o objeto chao e escreva:
- Código:
move_contact_solid(direction,8)
vspeed = 0
2º- inimigo com IA
Com esse código o inimigo ira pular quando você se aproximar dele, ele também pode ser usado para outras coisas como atirar,segir o personagem mas isso vou explicar mais abaixo.
IA básico:
- Código:
if distance_to_object(obj_player)<37
{
vspeed=-14
}
IA simples:
Evento Create:
- Código:
alarm[0]=round(random(90)+90)
Alarm0:
- Código:
//aqui o seu inimigo atira e toca o som do tiro ao obj_player se aproximar.
if distance_to_object(obj_player)<150
{
sound_play(tiro)
instance_create(x-1,y,bala);
}
alarm[0]=60
Se você quiser que o inimigo faça todas as ações juntas faça o seguinte crie o mesmo código de antes, esse:
- Código:
if distance_to_object(obj_player)<37
{
vspeed=-14
}
Agora um efeito simples de fade sem usar transição de rooms...
ara fazer um efeito de escurecer/clarear a tela manualmente basicamente vc precisará desenhar um retângulo do tamanho da tela e mudar a transparência dele.
Para começar, crie um obj que irá controlar o efeito. Vou chama-lo de obj_controle. Nesse oj, adicione um evento create e crie duas variaveis para indicar o nível de opacidade e se o efeito está ligado ou não.
- Código:
opacidade=1;
ligado=0;
Obs: O nível máximo de opacidade é 1, onde estará com toda a cor, quanto menor o valor, mais transparente.
Agora vamos trabalhar no evento draw para desenhar nosso retângulo...
Iremos usar as seguintes funções:
- draw_set_alpha(nivel) - É usada para alterar o nível de transparência do que está sendo desenhado;
- draw_rectangle(x1,y1,x2,y2,lina) - Essa função irá desenhar o retângulo. X1 e Y1 indicam a posição do retângulo na tela, X2 e Y2 indicam o tamanho(largura e altura, respectivamente) e linha indica se somente uma linha deverá ser desenhada, sem preenchimento;
- draw_set_color(cor) - Usada para definir a cor do desenho.
- Código:
draw_set_alpha(opacidade);
draw_set_color(c_black);
draw_rectangle(0,0,640,480,0);
Agora temos que criar um jeito de ligar e desligar a transparência, para testar, adicione dois eventos key press, eu usei A e S para ligar e desligar, respectivamente.
Evento A:
- Código:
ligado=1;
- Código:
ligado=0;
Já definimos o desenho e um sistema de teste para ligar e desligar, mas é agora que iremos criar o efeito de transição fazendo com que fique transparente aos poucos. Adicione um evento step e nele coloque as seguintes condições.
- Código:
if ligado==1 && opacidade>0 then //se o efeito estiver ligado e a opacidade for maior que zero)
{
opacidade-=0.1;
}
if ligado==0 && opacidade<1 then//se o efeito estiver desligado e a opacidade for menor do que 1
{
opacidade+=0.1
}
Obrigado pela atenção e desfrutem :lol: