Mataleone.com








    Tutorial 11: Portas

 

Funcionamento das portas no Half-Life

Portas no Half-Life sao entidades brush do tipo func_door (porta de correr) ou func_door_rotating (porta giratoria) que sao abertas e/ou fechadas por triggers, botoes ou quando o jogador as "aperta".

 

Portas de Correr

Para criar uma porta de correr no melhor estilo Star Trek, crie um brush que sera a porta. Transforme este brush em uma entidade func_door e abra a janela de propriedades (Alt+P).

Direcione o angulo para o lado que a porta vai correr (quando visto de cima) ou selecione Up para ela abrir para cima ou Down para ela abrir para baixo.

Ajuste os atributos principais das portas:

  • Name: De um nome unico qualquer a sua porta. A porta deve ter um nome para poder ser aberta atraves de um trigger ou botao, que sera tratado mais adiante.
  • Speed: Eh a velocidade com que a porta se abre. A velocidade padrao eh 100, e se for menor ela abre mais lentamente, se for mais rapido abre mais rapido. O melhor jeito de ajustar a velocidade desejada eh testando.
  • Move Sound: Eh o som que a porta faz enquanto se abre.
  • Stop Sound: Eh o som que a porta faz enquanto termina de se abrir.
  • Delay before close: Eh o tempo, em segundos, que a porta se mantem aberta antes de se fechar sozinha. Se o valor for -1, a porta se mantera aberta, e so se fechara se for acionada novamente.
  • Lip: Quando a porta se abre, ela se desloca inteira para o lado indicado. Se voce der um valor de Lip, ela se deslocara o seu tamanho menos o valor do Lip, ou seja, ficara uma ponta aparcendo. Use valores negatigos para aumentar o deslocamento da porta.
  • Damage inflicted when blocked: Eh o quanto a porta machuca o jogador se ele bloquea-la.
  • Ajuste os seguintes flags:

  • Starts Open: Toda porta comeca fechada. Ligue este flag para ela comecar aberta.
  • Passable: Permite ao jogador passar pela porta, ela nao fica solida.
  • Toggle: Se a porta estiver aberta, so se fecha se acionada novamente, e vice-versa.
  • Use Only: Permite abrir a porta "apertando" ela, com a tecla associada ao +use (o default eh a tecla "E")
  • Monsters Can't: Ligue este flag para que os monstros nao possam abrir a porta.
  • Se voce criar apenas esta porta, nao sera possivel abri-la sem que haja um trigger ou botao para ativa-la, ou se o flag Use Only nao estiver ligado. Falarei de triggers e botoes mais adiante.

    Veja no fim deste tutorial um exemplo de porta de correr.

     

    Portas Giratorias

    Porta giratoria eh uma daquelas comuns que temos em casa, com macaneta e dobradica. Esta porta eh feita de dois brushes, um eh a porta em si e o outro indica qual o centro de rotacao da porta transformados numa entidade func_door_rotating. Os dois brushes devem estar selecionados na hora de transforma-los em entidade! Este segundo brush de origem deve obrigatoriamente usar a textura ORIGIN e ficara transparente no jogo.

    O default das portas giratorias eh girar no eixo Z, perpendicular ao solo, como uma porta comum mesmo, mas pode ser configurada para girar em outros eixos para fazer um efeito de porta de garagem que se abre para cima, por exemplo (veja os flags abaixo).

    Brushes que compoem a porta (a porta e o verde/branco) mais um de trigger (rosa/preto):

    Os atributos da func_door_rotating sao os mesmos da func_door, adicionados do seguinte atributo:

  • Distance (deg): Eh o quanto a porta vai girar, em graus. O default eh 90.
  • Os flags tambem sao os mesmos, mais os seguintes

  • Reverse Dir: Inverte a ordem que a porta gira.
  • One-way: Faz com que a porta se abra apenas para um lado.
  • X Axis: Faz com que a porta gire no eixo X.
  • Y Axis: Faz com que a porta gire no eixo Y.
  • Veja no fim deste tutorial um exemplo de porta giratoria.

     

    Abrindo portas com Triggers (ao encostar nela)

    Um trigger eh, literalmente, um gatilho que ativa outras entidades (alvo). Ha varios tipos de triggers no Half-Life, mas so vou falar aqui de trigger_once e trigger_multiple, que sao identicos, a unica diferenca eh que o trigger_once so pode ser ativado uma vez, enquanto o trigger_multiple pode ser ativado varias vezes. Vou me referir ao trigger_multiple, mas tudo funciona para o trigger_once tambem. Na verdade, qualquer entidade que possua algum atributo de Target pode ser vista como um trigger, como num func_breakable, por exemplo, que tem o atributo Target on Break, onde a entidade cujo nome estiver neste atributo sera ativada quando o ele quebrar.

    O trigger_multiple define uma area, e se um jogador passar por ela, a entidade-alvo sera acionada. Para criar um trigger_multiple, crie um brush com a textura AAATRIGGER definindo a area do trigger (se nao usar esta textura, nao funciona!). Nao se preocupe, ele ficara transparente no jogo.

    Edite os atributos do trigger:

  • Target: O nome da entidade-alvo a ser acionada. Se mais de uma entidade tiver o nome indicado aqui, todas elas serao ativadas simultaneamente. Como este eh um tutorial de portas, coloque aqui o nome da porta que o trigger vai abrir.
  • Kill Target: Se voce colocar o nome de uma entidade aqui, ela sera destruida pelo trigger.
  • Delay Before Trigger: Tempo, em segundos, que o trigger esperara antes de acionar a entidade-alvo.
  • Delay Before Reset (somente para trigger_multiple): Tempo, em segundos, em que o trigger aguardara antes que se torne disponivel para ser acionado novamente.
  • Opcionalmente, cheque os flags:

  • Monsters: Se estiver ligado, mostros tambem poderao ativar o trigger.
  • No Clients: Se estiver ligado, o(s) jogador(es) nao pode(m) acionar o trigger.
  • Pushables: Se estiver ligado, objetos "empurraveis" (func_pushable) tambem poderao acionar o trigger
  • O trigger ja esta pronto! Quando o jogador entrar na area do trigger, ele acionara a porta e ela se abrira.

     

    Abrindo portas com Botoes

    Ao inves de usar triggers, voce pode criar um botao para abrir a porta. Um botao ativa uma entidade-alvo quando voce o "aperta". Crie um brush para o botao e transforme-o numa entidade func_button. Edite os atributos principais do botao:

  • Target: O nome da entidade-alvo a ser acionada. Se mais de uma entidade tiver o nome indicado aqui, todas elas serao ativadas simultaneamente. Como este eh um tutorial de portas, coloque aqui o nome da porta que o trigger vai abrir.
  • Delay Before Trigger: Tempo, em segundos, que o botao esperara antes de acionar a entidade-alvo.
  • Delay Before Reset: Tempo, em segundos, em que o botao aguardara antes que se torne disponivel para ser acionado novamente.
  • Lip: O botao tambem se mexe na direcao do angulo quando acionado, assim como uma porta de correr. O Lip funciona da mesma maneira.
  • Speed: Velocidade com que o botao vai se mexer.
  • Sounds: O som que o botao faz quando eh ativado.
  • Locked Sound: O som que o botao faz quando esta inativo.
  • Health: Se tiver um valor aqui, o botao se ativara com tiros, e esta sera a "energia" do botao, se voce atirar o suficiente para tirar esta energia, ele eh acionado (nunca testei se isso funciona!).
  • Opcionalmente, cheque os flags:

  • Don't move: Se estiver ligado, o botao nao se move.
  • Toggle: Se estiver ligado, o trigger nao volta a posicao original, somente se acionado novamente.
  • Sparks: Se estiver ligado, emite faiscas quando desligado.
  • Touch Activates: Eh acionado apenas com o toque, sem precisar aperta-lo.
  • Uma coisa interessante que se pode fazer com botoes, eh usar uma textura de dois estados. O Half-Life usa uma versao para o botao desligado e outra para o botao ligado. Procure texturas que tenham o mesmo nome e diferenciem apenas nos prefixos "+0" e "+A", como +0BUTTON3 (desligado) e +ABUTTON3 (ligado). Se voce associar a textuta +0BUTTON3 ao botao, quando voce aciona-lo, a textura muda automaticamente para o seu estado ligado, +ABUTTON3. Quando o botao desativar, a textura volta para o estao desligado.

    Textura com 2 estados:
    +0BUTTON3 +ABUTTON3

     

    Exemplos

    Aqui esta um mapa de exemplo com varios tipos de portas.

    A Porta 1 eh uma porta de correr simples que se abre para cima, com um trigger que a atravessa, sendo que ela pode ser aberta dos dois lados. O Lip da porta eh 8, sendo que quando ela subir, uma pequena parte vai ficar aparecendo no batente da porta.

    Porta de correr simples acionada por trigger:

    A Porta 2 eh uma porta giratoria comum. Se voce tiver alguma duvida de como criar uma porta desse tipo, abra o arquivo no WorldCraft e veja como foi construida.

    Porta giratoria acionada por trigger:

    Agora temos umas portas mais interessantes. A Porta 3 eh uma porta dupla que se abre para os dois lados, como uma porta de elevador. Na verdade sao duas portas com o mesmo nome. Quando um trigger eh acionado ele ativa todas as entidades que tenham o nome indicano no Target, portanto vai abrir as duas portas simultaneamente.

    O Lip das duas portas eh -1, para que elas se escondam totalmente dentro da parede quando se abrirem. Se o Lip fosse 0, ficariam exatamente na mesma posicao do batente da porta, o que da um efeito esquisito, pois dois brushes sobrepostos ficam piscando.

    E esta porta tambem eh "one-way", pois o seu trigger esta posicionado apenas de um lado da porta. Se voce passar por ela e ela se fechar, nao tem como voltar, pois nao ha nada do outro lado para ativa-la.

    Porta one-way dupla:

    A Porta 4 eh uma porta giratoria com um botao para aciona-la, ela so se abre se voce apertar o botao. A janela de vidro, eh na verdade uma outra porta. Portanto sao duas portas, como no exemplo anterior, a porta em si e o vidro, ambas com a mesma origem e o mesmo nome, acionadas pelo botao. A porta de vidro tem Render Mode Additive ou Texture e FX Ammount 100, para dar transparencia. Se tiver duvidas, abra o arquivo no WorldCraft para entender melhor sobre a sua criacao.

    As duas portas selecionadas separadamente:

     

    por - Mataleone -

    Copyright � 2001-2021 by Studio Avante