O Graphics no RGSS é diferente do Graphics no Java, no RGSS Graphics é só o módulo que cuida de desenhar tudo na tela, pra desenhar coisas efetivamente você precisa ter um objeto da classe
Sprite, que tem um
Bitmap.
O
Sprite contém as informações de
como mostrar o objeto na tela, isso inclui posição, cor, prioridade de desenho, opacidade, etc.
O
Bitmap tem as informações para
o quê será desenhado na tela, ou seja, as informações dos pixels.
Os bitmaps podem ser imagens carregadas de arquivos ou áreas de desenho com uma dimensão pré-determinada. Pra criar um sprite vazio onde eu posso desenhar que tem área 300x300, por exemplo, é feito o seguinte:
Código:
bitmap = Bitmap.new(300, 300)
Agora eu posso alterar os pixels desse bitmap usando as funções que a classe oferece, para a lista completa dessas funções, veja a documentação do RPG Maker. As que parecem ser o que você quer são
fill_rect e
set_pixel, com essas duas você desenha a forma geométrica que quiser no sprite.
Claro, a performance de chamar o
set_pixel pra cada pixel no sprite é ridícula, então fica inviável atualizar o sprite todo frame com essa técnica, mas se você só chamar a função na inicialização não deve ter problema.
Exemplo de um sprite com uma linha vermelha em 30°, com 100 pixels de largura:
Código:
deg = 30
rad = deg * Math::PI / 180
cos = Math.cos(rad)
sin = Math.sin(rad)
width = 100
height = (sin / cos).abs * width
color = Color.new(255, 0, 0)
bitmap = Bitmap.new(width, height)
if width > height
for x in 0...width
y = (x / cos * sin).round
bitmap.set_pixel(x, y, color)
end
else
for y in 0...width
x = (y / sin * cos).round
bitmap.set_pixel(x, y, color)
end
end
sprite = Sprite.new
sprite.bitmap = bitmap
(Código feito sem testar com algoritmo porco e matemáica duvidosa, se não funcionar foi mal aí :v)
Era essa a pergunta?
Edit: arrumei o algoritmo da linha ^^