🤔 Para Refletir :
"Quer ouvir um paradoxo? Desenvolvedores que fazem jogos envolventes."
- InterPlay

RPG Maker 2000 [rm2000] [Destiny Script] Efeito Lanterna na Tela

Dr.XGB Masculino

O Cenourão
Administração
Administração
Jogador maluco, problemático, olho parado.
Juntou-se
21 de Julho de 2015
Postagens
568
Soluções
3
Bravecoins
2.757
Área
Programação
Motor de jogo
RPG Maker 2003
Efeito Lanterna na Tela

fphd.png




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:​

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

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
RadianoRAD2?
GradoGRAD400
RPG MakerRPG255

Para usar o "?" no Destiny Script, usamos Math.Pi.
Código:
[color=red][b]$[/b][/color]
f[[color=blue]1[/color]] = [color=blue]2[/color] * Math.Pi; [color=green]// 1 volta completa em Radianos[/color]



[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, Bat-Sinal, 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!
 
Voltar
Topo Inferior