From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

"Controllers" (Controladores)

Os controladores são como Blocos que coletam dados providos pelos Sensores. Existem oito maneiras de processar essas entradas de dados:

Quando um Sensor é ativado, ele envia para fora um Pulso positivo e quando é desativado ele envia para fora um pulso negativo. O trabalho dos "Controllers" (Controladores) é checar e combinar estes Pulsos apara disparar a resposta apropriada como reação.

Tabela de Comparação de "Controllers" (Controladores)

Esta tabela é entregue de maneira a dar uma rápida visão geral dos tipos de "Controllers" (Controladores). A primeira coluna, de "Input" (Entrada), representa o número de Pulsos positivos enviados pelos "Sensors" (Sensores) conectados. As seguintes colunas representam cada resposta dos "Controllers" (Controladores) a estes Pulsos. A condição de "TRUE" (Verdadeiro) significa que as condições do "Controller" (Controlador) estão satisfeitas e que o "Actuator" (Atuador) que está conectado a ele será ativado, e a condição de "FALSE" (Falso) significa que as condições do "Controller" (Controlador) não foram alcançadas/atingidas e nada irá acontecer. Por favor, consulte as seções mais adiante nesta página para uma descrição mais detalhada de cada "Controller" (Controlador).

Nota
Assume-se que mais de um Sensor está conectado ao Controlador. Para um único Sensor, consulte a linha “All” (Todos).


Positivo para os Sensores Condições dos Controladores
ANDORXORNANDNORXNOR
Nenhum Falso Falso Falso VerdadeiroVerdadeiroVerdadeiro
Um Falso VerdadeiroVerdadeiroVerdadeiro Falso Falso
Múltiplos, Nem Todos Falso Verdadeiro Falso Verdadeiro Falso Verdadeiro
Todos VerdadeiroVerdadeiro Falso Falso Falso Verdadeiro


Controlador AND → E

O Controlador AND → E é o tipo padrão de "Controller" (Controlador) escolhido quando você cria um novo Controlador. Isto é porque é o Controlador mais comum e funciona muito bem para simplesmente passar um Sensor diretamente a um Atuador (operação que não pode ser feita sem o uso de um "Controller" (Controlador)).

Um Controlador do tipo AND ativa os "Actuators" (Atuadores) aos quais está conectado, somente caso todos os Sensores que estão conectados a ele tenham uma condição positiva. Caso somente um Sensor esteja conectado a ele, os "Actuators" (Atuadores) serão ativados tão logo o Sensor tenha sido disparado. Caso mais Sensores estejam conectados, todos eles tem de estar ativados ao mesmo tempo (todas as condições deverão ser atingidas/alcançadas). Isto é de onde o seu Nome vem (AND ou E). Caso existam dois Sensores, “sensor1” e “sensor2”, conectados ao "Controller" (Controlador), ambos sensor1 AND sensor2 tem de estar ativos ao mesmo tempo para disparar o evento.

Exemplo

Imagine que você queira fazer um botão de Menu. Quando o "Player" (Jogador) clica no Botão ele será transferido para a próxima "Scene" (Cena).

No Botão de Menu, você configura dois Sensores de Mouse, um Sensor do tipo Mouse over e um Sensor do tipo "Left button" (Botão esquerdo). Ambos estão conectados ao mesmo "Controller" (Controlador) tipo AND, que estão conectados à um "Actuator" (Atuador) do tipo "Set Scene" (Configurar Cena). Isto significa que o "Player" (Jogador) tem, ao mesmo tempo, que permanecer com o cursor do mouse sobre o botão de Menu e ao mesmo tempo clicar com o botão esquerdo dele para ir para a próxima cena (Ambas as condições foram atingidas/alcançadas).

Controlador OR → OU

Um Controlador tipo OR ativa o "Actuator" (Atuador) ao qual está conectado caso ao menos um de seus Sensores tenha sido ativado. Caso somente um Sensor esteja conectado ao "Controller" (Controlador), ele passará o Pulso positivo quando este Sensor for ativado, caso mais Sensores estejam conectados, somente um deles necessita ser ativado. O Controlador tipo OR não é exclusivo, o que significa que ele funciona de maneira parecida com um "Controller" (Controlador) tipo AND também: caso todos os Sensores estejam ativados, o "Controller" (Controlador) tipo OR irá simplesmente passar o Pulso. O Controlador tipo XOR é um Controlador Exclusivo do tipo OU.

Exemplo

Imagine que você queira que ambas as teclas Esc e o atalho Q possam terminar o seu jogo. Você então configura dois Sensores tipo Keyboard, sendo um com a tecla Esc e um com a tecla Q. Ambos então estão conectados a um "Controller" (Controlador) do tipo OR, que estão conectados a um "Actuator" (Atuador) tipo Termine este Jogo → Quit This Game. Caso um dos Sensores seja ativado, o "Game" (Jogo) então irá terminar.

Controlador XOR → OU (Exclusivo)

O Controlador tipo XOR é um Controlador Exclusivo do tipo OR. Exclusivo significa que um, e somente um, dos sensores tem de ter a condição positiva. Caso haja apenas um Sensor conectado ao "Controller" (Controlador), ele irá ativar os seus "Actuators" (Atuadores) quando este Sensor enviar um Pulso positivo. Caso mais Sensores estejam conectados ao "Controller" (Controlador), ele irá ativar os seus "Actuators" (Atuadores) somente quando um, não importa qual, dos Sensores conectados tenha uma condição positiva. Caso mais de um Sensor tenha a condição positiva, ele não será ativado.

Exemplo

---AGUARDANDO CONSTRUÇÃO---

Controlador NAND → Não E

O Nome NAND é uma abreviatura para o termo "Not And" (Não E). Em lógica, o não nega o resultado, O Controlador NAND é portanto o oposto de um Controlador AND. Um "Controller" (Controlador) do tipo AND, ativa os "Actuators" (Atuadores) somente quando todos os Sensores são disparados, um "Controller" (Controlador) tipo NAND faz o oposto. Quando nenhum dos |Sensores possuir uma condição de "TRUE" (Verdadeiro), os "Actuators" (Atduadores) são ativados. Caso haja somente um Sensor conectado ao Controlador, os Atuadores são ativados somente quando o Sensor não é disparado (tendo o seu comportamento comparável à uma simples ponte lógica do tipo NOT).

Exemplo

---AGUARDANDO CONSTRUÇÃO---

Controlador NOR → Não OU

O Controlador tipo NOR é um tipo de Controlador "Not OR" (Não OU), e ele é o oposto de um "Controller" (Controlador) tipo OR. Um Controlador NOR irá ativar os "Actuators" (Atuadores) caso somente nenhum dos Sensores seja disparado.

Exemplo

---AGUARDANDO CONSTRUÇÃO---

Controlador XNOR → Não OU (Exclusivo)

O Controlador XNOR é um Controlador Exclusivo do tipo "Not OR" (Não OU ). Mesmo que isso pareça confuso à primeira vista, ele é simplesmente o oposto da saída de um Controlador tipo XOR. O Controlador tipo XNOR, ativa os "Actuators" (Atuadores) quando mais (pelo menos dois Sensores) ou menos do que um Sensor (Nenhum) esteja disparado.

Exemplo

---AGUARDANDO CONSTRUÇÃO---

Controlador Expression → Expressão

Um Controlador que parece também confuso, mas na verdade é muito funcional em casos especiais. Ele requer uma expressão formatada, como uma curva de valores ou um campo de atuação em específico para seus valores.

Neste caso, o Controlador tipo "Expression" (Expressão) checa para saber se o sinal do Sensor, chamado de “sensor”, tem seu valor evaluado (constituindo uma condição TRUE ( Verdadeira)) e se o valor da "Property" (Propriedade) chamada “prop”, é igual a 1.

---AGUARDANDO CONSTRUÇÃO---

Para informações mais úteis sobre a utilização do "Controller" (Controlador) tipo "Expression" (Expressão), veja esta página (em inglês)

Controlador Python → Scripts Python

O Controlador tipo Python, é um Controlador que checa a entrada utilizando um Script programado pelo usuário, também conhecido como Script Python ou qualquer outro arquivo que contenha códigos em linguagem de programação Python. Os Controladores Python possuem dois modos: Script ou Module. Ambos podem ser escritos em um aplicativo Editor de textos e guardados dentro do arquivo Blender, ou então eles podem ser formados por arquivos externos de Scripts Python.

Mais informações sobre a utilização de Scripts Python dentro da BGE (Blender Game Engine) podem ser encontradas aqui. (em inglês)

A API para a linguagem Python dentro da BGE pode ser encontrada aqui.(em inglês)

"Script Mode" (Modo de Scripts)

No Modo Script, o Controlador é ligado à um Script, e o Script como um todo será executado antes que a parte "Logic" (Lógica) se mova/ande. Todas as coisas dentro desse Script acontecerão no espaço de um "Frame" (Quadro) ou no mesmo "Frame" (Quadro), caso o mesmo valor ou atributo seja alterado mais do que uma vez, somente o último será visível dentro do Jogo por causa desse comportamento . Caso, por exemplo, a posição de um Objeto seja alterada primeiramente para (100.0,100.0,100.0) mas, mais tarde, dentro do mesmo Script tenha sido alterado para (0.0,0.0,0.0) dentro de suas variáveis, então somente o valor de (0.0,0.0,0.0) será visível ao jogador por que o movimento para a posição (100.0,100.0,100.0) aconteceu no mesmo "Frame" (Quadro).

"Module Mode" (Modo de Módulos)

A Partir da versão de produção 2.49 do Blender, o Controlador de Módulos para Scripts Python foi adicionado. Simplesmente escolha a opção Module, ao invés de Script em seu tipo, no Menu Drop Down do Controlador Python. Então, defina uma função neste módulo e chame essa função a partir do controlador. Ao invés de escrever “myScript.py” na caixa de edição do Script, você irá escrever “myModule.myFunc” na caixa de edição do Módulo. Esta função irá rodar todas as vezes que o "Controller" (Controlador) for chamado. Mas outras funções e variáveis fora do escopo de myFunc, irão rodar somente uma vez. Isto é bom para a otimização do seu código quando você quiser iniciar variáveis uma única vez e depois queira utilizá-las novamente mais tarde.

O "Controller" (Controlador) de Scripts Python tipo Module suporta qualquer número de atributos, isso significa que pacotes são suportados automaticamente. Tanto quanto com “myModule.myFunc” , você pode fazer “myPackage.myModule.myFunc”, com pacotes atrelados de trabalho também, pelo fato desse método chamar também em instâncias de Classes como: “myPackage.myModule.myInstance.myMethod”. O "Controller" (Controlador) tipo Python é passado para a função de Script Python como um argumento para funções que tomam/recebem um argumento. Isto permite a edição a quente ou ao vivo de Scripts.

Aprenda mais sobre o "Controller" (Controlador) de Módulo Python em:

*Thread http://blenderartists.org/forum/showthread.php?t=156672 (em inglês)
*Video http://download.blender.org/apricot/live_bge_edit.ogv (em inglês)