O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[Destiny Script] Efeito Lanterna na Tela

Iniciado por Dr.XGB, 21/06/2013 às 11:30

Efeito Lanterna na Tela






Autor: Dr.XGB
Plataforma: RPG Maker 2000
Dificuldade: Intermediário
Outro Motor: Destiny Script

Este sistema já é muito utilizado quando você quer fazer uma dungeon ou uma sala escura onde o herói tem que possuir uma lanterna para conseguir explorar aquele local.
A diferença é que eu montei uma demonstração onde você pode fazê-lo com a linguagem do Destiny Script, sem precisar criar imagens e importá-las para o jogo, ou seja, você cria a picture dentro do próprio jogo.

Além disso, gostaria de deixar pra vocês uma fórmula bem bacana para você desenhar um círculo através do Destiny. Dê uma olhada nisso:

$
for(v[1] = 0; v[1] < tamanho do círculo; v[1]++)
  for(f[1] = 0.0; f[1] < 360.0; f[1] += 0.5)
    f[2] = Math.Cos(f[1],DEG)*circunferência desejada+coordenada X a ser desenhada;
    f[3] = Math.Sin(f[1],DEG)*circunferência desejada+coordenada a Y ser desenhada;
    Picture[1].AuroraSheet.Pixel = Index da cor de acordo com a paleta da picture;
  next;
next;

Como o procedimento de desenhar por pixel é muito lento, decidi fazer esta ação uma vez no início do jogo e salvando a imagem criada em uma pasta qualquer; fazendo com que, então, possa ser carregada a qualquer momento através do Destiny.
Lembrando que em f[2], pegamos o valor atual de f[1] e calculamos o Cosseno de f[1], multiplicando pela circunferência que você que desejar, e somando pela área da picture onde você quer que o círculo seja desenhado. O mesmo serve para f[3], porém calculando o Seno de f[1], acrescentando o restante da fórmula. Usamos a v[1] para determinar essa circunferência, já que o loop "for" pega um valor inicial no primeiro parâmetro e só termina quando não estiver mais de acordo com a condição feita no segundo parâmetro; enquanto isso ele realiza a operação do terceiro parâmetro, que é ficar somando por 0.5 até chegar 360 (uma volta completa em Graus (constante DEG).

Para calcular circunferência, você pode usar as 3 unidades de medidas angulares do SI (Sistema Internacional de Unidades): Grau, Radiano e Grado. E também pode utilizar a unidade de medida usada especialmente para o RPG Maker. Veja a tabela abaixo e veja que cada uma das unidades tem o seu limite de acordo a uma volta completa:







UnidadeConstanteVolta Completa
GrauDEG360
RadianoRAD
GradoGRAD400
RPG MakerRPG255

Para usar o "π" no Destiny Script, usamos Math.Pi.
$
f[1] = 2 * Math.Pi; // 1 volta completa em Radianos




[box class=catbg4]Download da Demonstração[/box]

Ao baixar a Demo você entenderá melhor como o sistema ao todo funciona. Porém achei necessário explicar como calcular ângulos para que você possa desenhar círculos, meia-lua, sinal de luz do Batman, enfim...

Espero que tenham gostado e que tenham sido muito útil para estudo ou para desenvolver outros sistemas baseando-se nestes cálculos.
Até mais!