16 de dezembro de 2014

Como criar Luz

Existem diversas maneiras de fazer sistemas do iluminação no Game Maker, cada uma com suas vantagens e desvantagens. Ensinarei neste tutorial como criar luzes utilizando comando de repetição, que podem ser usadas como tochas, fogueiras, lâmpadas, entre outros.

Para uma melhor compreensão deste tutorial é importante saber utilizar Funções de Repetição e Surfaces.

O resultado será algo parecido com isso:

Luzes no Game Maker


obj_controle_luz

Create Event

surface_luz = surface_create(view_wview[0], view_hview[0])

Draw Event

surface_set_target(surface_luz)

//Define a luz ambiente,

draw_clear_alpha(c_black, 0.97)

//Executa o código com todos objetos que tiverem "obj_luz_parent" como Parent.

with (obj_luz_parent)
{
    var i = centro;
    draw_set_alpha(brilho)
    repeat (circulos)
    {
    draw_circle(x-view_xview[0], y-view_yview[0], i, false)
    i += contador
    }
}

//Reseta o draw_set_alpha para que não prejudique os próximos desenhos.

draw_set_alpha(1)

surface_reset_target()

if surface_exists(surface_luz)
{
    draw_surface(surface_luz, view_xview[0], view_yview[0])
}
else
{
    surface_luz = surface_create(view_wview[0], view_hview[0])
}

obj_luz_parent

Create Event

raio = 300 //Alcance total da luz.
centro = 100 //Tamanho da parte central da luz.
circulos = 30 //Quantidade de círculos entre o centro e o fim da luz.
intensidade = 0.2

brilho = (1/circulos)*intensidade
contador = (raio - centro)/circles

Quanto maior for o número de círculos, menos visível serão as linhas de transição entre cada círculo, porém isso também custará mais processamento e, dependendo da situação, deixará seu jogo mais lento. Faça algumas mudanças no código para entender exatamente como o código funciona e adapte-o ao seu projeto.

Observação: Ao invés de definir as variáveis no obj_luz_parent, como feito no tutorial, o ideal é definí-las em cada objeto que servirá como fonte de luz, deixando o obj_luz_parent apenas como um Parent comum a todos esses objetos. a menos que todas as luzes do jogo sejam iguais ou que você utilize funções randômicas para definir as variáveis.

Nenhum comentário :

Postar um comentário