Dinastia Maker
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas intermediarias em gamemaker

Ir para baixo

Dicas intermediarias em gamemaker Empty Dicas intermediarias em gamemaker

Mensagem  LucasMan Ter Set 09, 2008 11:20 pm

Nivel:Intermediario
Créditos especiais à: hiperbite e Mathy220

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.
Conhecendo as funções podemos começar o código do evento draw...
Código:
draw_set_alpha(opacidade);
draw_set_color(c_black);
draw_rectangle(0,0,640,480,0);
Primeiro definimos o nível de transparência usando a variável que criamos antes, depois definimos a cor do desenho para preto e finalmente desenhamos o retângulo. Repare que o tamanho usado nesse exemplo é 640x480, lembre-se de usar o tamanho da tela do seu jogo.

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;
Evento S:
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
}
É bem simples, apenas checa se o sistema está ligado ou não e soma ou subtrai o valor da opacidade aos poucos para dar o efeito de transição.

Obrigado pela atenção e desfrutem Laughing

LucasMan
Aprendiz
Aprendiz

Mensagens : 3
Data de inscrição : 09/09/2008
Localização : Votuporanga-Sp

http://www.legalgamesforum.k6.com.br

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos