Tutorial 11: Portas
(Retirado de arquivo.mataleone.com)
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:
Ajuste os seguintes flags:
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).
Os atributos da func_door_rotating sao os mesmos da func_door, adicionados do seguinte atributo:
Os flags tambem sao os mesmos, mais os seguintes
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:
Opcionalmente, cheque os flags:
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:
Opcionalmente, cheque os flags:
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.
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.
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.
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.
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.
por - Mataleone -