Fazendo os menus de escolha aparecerem na hora certa
3 participantes
Ren'Py Brasil :: Inicio :: Ren'Py :: Tutoriais
Página 1 de 1
Fazendo os menus de escolha aparecerem na hora certa
Uma dúvida muito comum, quando começamos a usar o Ren'Py, é "como faço para ter a pergunta e o menu de escolha na mesma tela"? Exemplificando: você tem o seguinte código:
Ren'Py irá mostrar a sentença do narrador na caixa de diálogo, aguardar por um clique, apagar a caixa de diálogo e mostrar o menu de escolhas. Seria bom ter o diálogo e as escolhas sendo mostradas ao mesmo tempo, principalmente quando a pergunta é mais complexa. Isso é possível dessa forma:
Agora, a caixa de diálogo não irá desaparecer quando o menu for mostrado. A maioria dos jogos feitos com Ren'Py, mesmo os mais famosos, usa esse sistema. Mas ainda há um probleminha, que as pessoas preferem ignorar: na verdade, o menu de escolhas acaba sendo mostrado antes que a gente leia a pergunta.
Hoje, me ensinaram um jeito genial de resolver isso usando o personagem-padrão 'extend'. Ren'Py vem com alguns personagens pré-programados, cada um com uma função. 'narrator' (narrador) é um deles, e eu acho que não preciso explicar a função dele. A função do personagem 'extend' é acrescentar texto à caixa de diálogo, mantendo o texto que já estava lá antes. Para que serve isso? Vou dar outro exemplo:
Ren'Py vai exibir a sentença do narrador, aguardar por um clique, tocar o som e mostrar a transição, e então vai acrescentar a outra sentença ao texto. Note que essa segunda sentença começa com um espaço em branco. 'extend' é, portanto, um personagem "invisível". O que ele diz nada mais é do que uma continuação da fala do personagem anterior. Você pode usá-lo para, no meio do texto, tocar um som de "tcham-tcham-tcham-tcham", mudar a expressão facial do personagem... ou explodi-lo.
"Tá, mas como é que a gente usa ele para mostrar o menu na hora certa"? Ah, isso é fácil. É só pedir para que 'extend' não diga nada. Não, não estou maluco, a coisa funciona assim:
O que fizemos aqui? Voltamos a colocar a pergunta fora do 'label' menu.
Dentro do label, colocamos 'extend' fazendo mímica. A função dele é forçar uma pausa, aguardando uma interação do jogador.
O que vai acontecer? A pergunta será mostrada e lida pelo jogador. Ele então, naturalmente, clicará para avançar o texto, como a gente sempre faz. Só que o texto vai permanecer na tela, e o menu será mostrado junto com ele.
Feita a escolha, o jogo continuará normalmente. Genial. Eu adoraria ter tido essa ideia, mas ela não é minha. Felizmente, philat é alguém bastante generoso, e a compartilhou com a gente.
- Código:
"A quem você decide acompanhar?"
menu:
"Alana":
jump compras_com_alana
"Laura":
jump estudar_com_laura
Ren'Py irá mostrar a sentença do narrador na caixa de diálogo, aguardar por um clique, apagar a caixa de diálogo e mostrar o menu de escolhas. Seria bom ter o diálogo e as escolhas sendo mostradas ao mesmo tempo, principalmente quando a pergunta é mais complexa. Isso é possível dessa forma:
- Código:
menu:
"A quem você decide acompanhar?"
"Alana":
jump compras_com_alana
"Laura":
jump estudar_com_laura
Agora, a caixa de diálogo não irá desaparecer quando o menu for mostrado. A maioria dos jogos feitos com Ren'Py, mesmo os mais famosos, usa esse sistema. Mas ainda há um probleminha, que as pessoas preferem ignorar: na verdade, o menu de escolhas acaba sendo mostrado antes que a gente leia a pergunta.
Hoje, me ensinaram um jeito genial de resolver isso usando o personagem-padrão 'extend'. Ren'Py vem com alguns personagens pré-programados, cada um com uma função. 'narrator' (narrador) é um deles, e eu acho que não preciso explicar a função dele. A função do personagem 'extend' é acrescentar texto à caixa de diálogo, mantendo o texto que já estava lá antes. Para que serve isso? Vou dar outro exemplo:
- Código:
"Carlos, cuidadosamente, tenta desarmar a bomba."
play sound "explosao.ogg" # eu evito acentuar nomes de arquivos, por segurança
with vpunch
extend " Oh não! Voou tudo pelos ares!"
Ren'Py vai exibir a sentença do narrador, aguardar por um clique, tocar o som e mostrar a transição, e então vai acrescentar a outra sentença ao texto. Note que essa segunda sentença começa com um espaço em branco. 'extend' é, portanto, um personagem "invisível". O que ele diz nada mais é do que uma continuação da fala do personagem anterior. Você pode usá-lo para, no meio do texto, tocar um som de "tcham-tcham-tcham-tcham", mudar a expressão facial do personagem... ou explodi-lo.
"Tá, mas como é que a gente usa ele para mostrar o menu na hora certa"? Ah, isso é fácil. É só pedir para que 'extend' não diga nada. Não, não estou maluco, a coisa funciona assim:
- Código:
"A quem você decide acompanhar?"
menu:
extend ""
"Alana":
jump compras_com_alana
"Laura":
jump estudar_com_laura
O que fizemos aqui? Voltamos a colocar a pergunta fora do 'label' menu.
Dentro do label, colocamos 'extend' fazendo mímica. A função dele é forçar uma pausa, aguardando uma interação do jogador.
O que vai acontecer? A pergunta será mostrada e lida pelo jogador. Ele então, naturalmente, clicará para avançar o texto, como a gente sempre faz. Só que o texto vai permanecer na tela, e o menu será mostrado junto com ele.
Feita a escolha, o jogo continuará normalmente. Genial. Eu adoraria ter tido essa ideia, mas ela não é minha. Felizmente, philat é alguém bastante generoso, e a compartilhou com a gente.
Donmai- Iniciante
- Mensagens : 10
Data de inscrição : 06/10/2015
Re: Fazendo os menus de escolha aparecerem na hora certa
Obrigado por compartilhar!
Lembrando que isso pode ser usado também no modo NVL, apesar de ser útil somente em alguns caso, já que o modo NVL já mantém o texto e você precisa "limpar" a tela manualmente.
Lembrando que isso pode ser usado também no modo NVL, apesar de ser útil somente em alguns caso, já que o modo NVL já mantém o texto e você precisa "limpar" a tela manualmente.
Re: Fazendo os menus de escolha aparecerem na hora certa
Super interessante, mas no meu projeto atual eu vou deixar que a caixa desapareça mesmo, mas no próximo eu vou querer algo assim, que bom que ja tem um tutorial.
Obrigada pro disponibilizar isso.
Obrigada pro disponibilizar isso.
Ren'Py Brasil :: Inicio :: Ren'Py :: Tutoriais
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|