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.

[PROG] |~|Tutorial|~| Criando Objetivos no jogo

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

[PROG] |~|Tutorial|~| Criando Objetivos no jogo

Mensagem por Tutoriais & Aulas » Qui Abr 28, 2016 8:03 pm

Autor original: RodrigoM.
Yoo Guy's, a pedido do amigo bee50cent, estou fazendo esse tutorial de como colocar objetivos para o personagem passar de fase, no nosso caso vamos usar uma room para o objetivo!

Eu, não vou comentar muito aqui, pois esta bem explicado nos scripts, então aqui eu falarei o básico mesmo!

Detalhes do tutorial:

Nível: Iniciante/Intermediário
Com Engine: Sim
Escrito por: Rodrigo M.
Em resposta a: bee50cent
Plataforma: GM8(Pelo menos onde em fiz)


Bem, vamos precisar de 4 objetos:

obj_player
obj_objetivo
obj_bloco
obj_controle

De 2 rooms:

rm_teste
rm_objetivo

e 3 Sprite:

spr_player
spr_objetivo
spr_bloco

bem, Mão na massa! =D

Atribua cada sprite, para o nome de referencia.

E no objeto player, vamos declaram algumas variáveis para usarmos nos objetivos:
Create:

Código: Selecionar todos

global.obj_azul := 0 //Declarando que não temos objetos azuis ainda
Aqui se você for fazer para aparecer os objetivos em outra room, coloca isso no create também, para o pause, e mudar a room :

Código: Selecionar todos

global.room_id := room //Variavel, para declarar a room que o player esta, coisa do pause game! 
Se você já tiver a movimentação do player, pode pular essa parte:
Step:

Código: Selecionar todos

//Movimento do Personagem
if keyboard_check(vk_left) and place_free(x-5,y){x -=5}
if keyboard_check(vk_right) and place_free(x+5,y){x +=5}
if keyboard_check(vk_up) and place_free(x,y-5){y -=5}
if keyboard_check(vk_down) and place_free(x,y+5){y +=5}
Agora se for fazer o pause, coloca no step também:

Código: Selecionar todos

//Dar o pause game
if keyboard_check_pressed(ord("P")){
room_persistent=true
room := (rm_objetivo)
}
Agora na colisão com o obj_objetivo, coloca:

Código: Selecionar todos

global.obj_azul +=1 //vai aumentar 1 objeto azul para nós quando colidirmos com o objeto
E na colisão com o obj_bloco coloca:

Código: Selecionar todos

// Limitando o player de sai da room
move_contact_solid(direction,12)
vspeed=0
Lembre-se de que o obj_bloco, tem que estar marcado solido.

Agora no obj_objetivo, na colisão com o player coloca:

Código: Selecionar todos

instance_destroy()
Agora, terminamos as preliminares, Vamos fazer os objetivos em si.

no obj_controle que foi o unico sem sprite, coloca no create:

Código: Selecionar todos

//Configurando os textos
//dos Objetivos

t_objetivo := 'Objetivos:'; //Titulo
t_objetivos := 'Pegar 10 objetos azuis - NO'; //Objetivo 1
t_objetivos1 := 'Pegar mais de 12 objetos azuis - NO'; //Objetivo 2
///////////////////////////////////==//////////////////////////////
//ai se quiser colocar mais objetivos copia a 
//
//variavel t_objetivos, e da um numero
//
//para ela, 1,2,3,4, etc...
//
//Ou coloque uma variavel de seu gosto!
//////////////////////////////////==//////////////////////////////

efeito := ''; //aqui digamos que é o texto, ele esta 
//zerado aqui, mais para setar seu valor mesmo
//No caso ele será usado depois

texto := 0; //aqui a mesma coisa, ele esta setado aqui
//para ser usado depois

//NOTA := eu coloquei aquele 'NO' na frente do texto, para mostrar que o objetivo não esta completo!

Aqui definimos o texto que vai aparecer, e eu coloquei com uma animação, tipo, letra por letra, para ficar menos feio! [:¬D]

no step, vamos fazer o efeito de letra, por letra, e definirmos a matemática do objetivo:

Código: Selecionar todos

///////////////////////////////////==//////////////////////////////
//Matematica Basica dos objetivos
//
//Aqui calculei quantos objetos azuis seriam necessario para completar um objetivo
//
///////////////////////////////////==//////////////////////////////

if global.obj_azul >= 10 {t_objetivos := 'Pegar 10 objetos azuis - OK';} //NOTA := Eu coloquei OK na frente que mostra que o objetivo foi completo
if global.obj_azul >=12 {t_objetivos1 := 'Pegar mais de 12 objetos azuis - OK';
} //aqui no caso como é o ultimo objetivo, você pode colocar
//no fim do script game_end(), ou room_goto_next(), etc..


///////////////////////////////////==//////////////////////////////
//                      o efeito do texto
//essa variavel 'efeito' ela vai ser usada, como 'cara' do texto
//
//Ela vai armazenar o efeito de letra por letra
//
///////////////////////////////////==//////////////////////////////

texto +=1 //configure aqui a velocidade que o texto apareça
efeito := string_copy(t_objetivo+'#'+t_objetivos+'#'+t_objetivos1,0,texto) //onde esta '#', é a mudança de linha, quando for colocar mais algum objetivo
//coloque a variavel com o texto, +, e coloque entre Aspas, esse simbolo
//para pulara linha e + de novo se tiver outra variavel, e assim por diante

se você esta fazendo com o pause coloca no step:

Código: Selecionar todos

//Para o pause/mudança de room
if keyboard_check_pressed(ord("P")){
room := (rm_teste)
}
Agora por ultimo, mais não menos importante no magnífico evento draw:

Código: Selecionar todos

///////////////////////////////////==//////////////////////////////
//
//Desenhando os Objetivos
//
//Aqui é bem simples apenas desenhei o texto na tela
//
///////////////////////////////////==//////////////////////////////

draw_set_font(font0)
draw_set_halign(fa_center)
draw_text_color(room_width/2,room_height/2-80,efeito,c_black,c_white,c_black,c_white,0.7)

//Só para desenhar quantos objetos já temos
draw_rectangle_color(0,0,150,32,c_white,c_white,c_gray,c_gray,0)
draw_text(67,5,'Objetos azuis: ' +string(global.obj_azul))

E é isso pessoal, agora coloca o obj_player na rm_teste e coloque uns 15 obj_objetivo, e na rm_objetivo coloca o obj_controle, e rode tudo, se se computado explodir, corra pegar um extintor, ou qualquer outro tipo de pó que possa apagar o fogo, menos agua! [x¬S]

Caso contrario, não tenha uma explosão, Parabéns, você completou o tutorial com sucesso! [X¬D]

Tutorial por: Rodrigo M. - GMBR

Lembrando que agora eu vou continuar com os meus tutoriais de domingo! ;)

Responder

Quem está online

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