Avatar do usuário
Tutoriais & Aulas
Colaborador
Colaborador
Autor
Mensagens: 174
Registrado em: Qui Abr 28, 2016 11:37 am
Karma: 910

[GRAF] [SIGI - TUTO] TERREMOTO!!!

Qui Abr 28, 2016 8:45 pm

Autor original: SIGILOSO


Falaaee moçada!
Por alguma estranha razão,sempre q algo de bom acontece comigo,eu crio um novo tutorial!!
Entao,hj resolvi ensinar aos pequenos gafanhotos,um efeito mto interessante: o efeito de TERREMOTO! Vamos sacudir o GM!! XD

Nome: Efeito de terremoto
Descrição: Neste tuto iremos aprender a "sacudir" a tela de seu jogo usando a variável view_angle,causando um efeito bem interessante!
Nível de dificuldade: Mediano
Requerimentos: GM 7/8 PRO,mas creio q funcione no Lite tbm.

   Para começarmos a criar nosso efeito de terremoto,iremos precisar declarar algumas variáveis globais.Caso vc nao tenha algum obj_controle,ou algum similar, crie um,e em seu CREATE,digite:


global.TREMOR=0
global.TREMOR2=0



   Que beleza! Já temos nossas variáveis! Agora,vamos explicar a funçao de cada uma no nosso efeito:

TREMOR Este valor deverá ser sempre mantido como 0. Ele controla o efeito propriamente dito,faz a tela balançar pra um lado,e depois pro outro... Irei explicar melhor ^^
TREMOR2 É a força do tremor! Quanto maior este valor,mais forte será o terremoto!
Usando direito essa variável,facilmente vc pode fazer efeitos reais pra qunado uma pedra cair no chao ou quando uma enorme explosão acontecer!

Lembre-se,aí no CREATE esses valores devem ser mantidos como 0!!

Bem,a explicação deste tuto será de trás para frente. Primeiro,veja o resultado do efeito,depois,entenda como ele foi feito. No STEP deste objeto,digite:


if keyboard_check_pressed( alguma tecla )=true
global.TREMOR2=4 ( ou algum outro valor maior do que 0



Agora,num código separado,digite:


if global.TREMOR=0
{
view_angle-=global.TREMOR2/1.5
if view_angle<-global.TREMOR2
global.TREMOR=1
}

if global.TREMOR=1
{
view_angle+=global.TREMOR2/1.5
if view_angle>global.TREMOR2
global.TREMOR=0
}

if global.TREMOR2>0
global.TREMOR2-=global.TREMOR2/10
else
{
view_angle=0
global.TREMOR=0
}



Até q nao é um código tao grande,nao é msm?? Ponha este objeto na room e teste,pressionando a tecla q vc escolheu na hora de digitar o código.
ATENÇÃO!! Certifique-se de q há algum objeto na tela para notar o tremor,e tbm veja se a view da room está ativada! E entao..teste.

Ahh!! Legal né? xD
Agora,vamos entender como esse efeito foi feito:  ( rimo!!! XD )

No momento em q a tecla é pressionada, a variável TREMOR2 fica sendo igual ao valor q está lá. Nesse momento,esta parte do código entra em ação:


if global.TREMOR=0
{
view_angle-=global.TREMOR2/1.5
if view_angle<-global.TREMOR2
global.TREMOR=1
}



Como TREMOR está igual a zero,usando a variável view_angle ( o ângulo da room ),a tela irá inclinar numa velocidade definida pela variável TREMOR2,até q,ao inclinar até certo ponto,tbm definido pela variável TREMOR2,TREMOR fica sendo igual a 1,o q desativa esta parte do código,ativando esta:


if global.TREMOR=1
{
view_angle+=global.TREMOR2/1.5
if view_angle>global.TREMOR2
global.TREMOR=0
}



É a msm coisa! Mas inclinando a room para o outro lado,e q ao chegar à outro certo ponto,retorna a varíavel TREMOR para 0. Com isso,a view ficaria neste momivento continuamente. Se nao fosse...por esta parte:


if global.TREMOR2>0
global.TREMOR2-=global.TREMOR2/10
else
{
view_angle=0
global.TREMOR=0
}



Lembra-se,q praticamente todo o movimento do efeito era baseado na variável TREMOR2? Então,como vemos no código,enquanto ela estiver maior do q 0,ou seja,enquanto o terremoto estiver sendo executado,seu valor diminuirá,fazendo com q o terremoto "se acalme". ^^
E no momento em q ele chega a 0,o terremoto acaba!

Viram? Uma forma simples de se criar um efeito bem legal e útil para seus jogos! xD

Espero ter ajudado mais alguem por aí... quem sabe? ^^
:afro:
1

Tags: