manual bge

Upload: marcelo-soares

Post on 07-Jul-2015

410 views

Category:

Documents


1 download

TRANSCRIPT

GAME ENGINE DO BLENDER(Traduzido por Aclive) http://ddj.orgfree.com

1. INTRODUO: 1.3 - Por que utilizar a engine Blender? Qual o seu potencial?- Ambiente integrado, com modelador, animao e game player. - Construo de objetos com Fsica aplicada (dinmica de corpo rgido) e simulao de coliso. - De fcil interatividade com sensores predefinidos e outros blocos lgicos. - Multiplataforma: Windows, Linux, FreeBSD, BeOS, Irix e mais...

1.4 - LGICA DE UM JOGO:A figura abaixo mostra um objeto (o jogador) num cenrio simples.

Esta seo corresponde a um pequeno tutorial que ir ensin-lo a: - Ajustar os atributos dos objetos; - adicionar blocos lgicos - conectar os blocos lgicos - o uso bsico de teclado, Always e Touch Sensor (sensor de toque) Este documento no ensina como usar o Blender, a modelar ou fazer qualquer animao. Para estas informaes, procure o manual ou os inmeros tutoriais dispostos na internet.

Preparando: Inicie o Blender e carregue o arquivo B-Man1.blend. Voc pode usar a tecla F1 ou o menu FILE para carregar a cena. Com a cena j carregada, provavelmente voc ver algo parecido com o screenshot abaixo:

A janela 3D a esquerda uma view texturizada para a cmera. A janela direita um frame do arame da observao do caracter jogador (player). Ele est selecionado, devido a sua colorao rosa. A parte inferior onde se encontra os botes com as funes (RealTimeButtons), voc pode cham-las com F8. aqui que a maioria do trabalho de interatividade dos grficos 3D no blender sero feitos. Agora podemos iniciar a gameEngine movendo o cursor do mouse para a janela 3D e pressionando a tecla P. Com ns no definimos qualquer tipo de interatividade voc vai ver as linhas de controle desaparecerem e o cu azul em vez de cinza. Pressione ESC para parar a gameEngine novamente. Fazendo um ator que cai: Agora clique com o boto esquerdo do mouse sobre o ator no RealtimeButtons. Simplesmente ative o boto escrito DYNAMIC. Isto define par o objeto selecionado como um ator que ele ser construdo com atribuies de Fsica da gameEngine (ou seja, ser um corpo que afetado por uma gravidade). Se voc acidentalmente tirar a seleo do jogador torne a selecion-lo com o boto direito do mouse e recarregue a cena.

Atributos a serem ajustados para o objeto Agora rode a gameEngine novamente. Pressione a tecla P com o mouse sobre o a janela com a opo texturizada e voc ver o jogador cair sobre o terreno e saltar algumas vezes. Pressione ESC pra parar a engine. Movendo o ator: O RealtimeButtons esto logicamente divididos em quarto colunas. A coluna mais a esquerda usada para ajustar os parmetros que fazem o objeto cair. As outras trs colunas so usadas para a construo das interatividades que acontecem em seu jogo. Agora vamos mover o jogador pelo ambiente.

Existem trs partes chamadas Sensors (Sensores), Controllers (controladores) e Actuators (atuadores). Voc pode pensar os Sensors como uma forma de vida (que d vida ao jogador), os controladores como o crebro e os atuadores como a musculatura. Agora pressione o boto Add para cada coluna uma vez com o boto esquerdo do mouse para fazer um LodigBrick (bloco lgico) para os sensores, controladores e atuadores.

Selecionando o tipo de LogikBrick. O screenshot acima mostra os tipos de LogicBricks existentes. Clique no boto escrito Always e escolha Kayboard. Na verso 2.41 o screen um pouco diferente do de cima, mas no geral bem semelhante. Agora clique com o boto esquerdo no interior da caixa fazia correspondente ao campo key. O texto Press any key aparece. Pressione a tecla que voc deseja para mover seu personagem para frente (eu sugiro a seta para cima). Agora ns temos como controlar o movimento. Ns vamos definiar como o jogador vai se mover. A primeira linha de nmeros chamada FORCE e define com que fora ser aplicada quando o controle de movimento estiver ativo. Os trs numeros so as respectivas foras no eixo X, Y e Z. Se olhar na malha do jogador voc ver para onde o eixo X est apontando. Para mover para frente necessrio aplicar uma fora positiva ao longo do eixo X. Para fazer isto basta clicar sobre o nmero com o boto esquerdo do mouse. Coloque o valor 10.00 para X. Nos temos que fazer as ligaes como foram exibidas no screenshot mais acima. Nos precisamos conectar atravs de linhas os blocos lgicos. Clique e arraste com o boto esquerdo do mouse pressionado sobre a bola amarela do Keyboard Sensor e voc observar uma linha preta, ligue esta linha preta no anel no controlador AND. Solte o mouse e agora os LogicBricks esto conectados. Agora conecte a bola amarela do controlador AND com o anel do controle de movimento (Motion Controller). Para deletar uma conexo mova o mouse sobre a conexo. A linha ir ficar evidente e voc poder apag-la pressionando a tecla X ou DELETE. Agora pressione a tecla P para iniciar a gameEngine e ento pressione a SETA PARA CIMA e voc ver o jogador indo para frente ao longo do eixo X. Mais controles: Agora adicione mais LogicBricks como mostrado no screenshot abaixo. Estes LogicBricks vai permitir voc mudar a orientao do personagem utilizando as teclas de setas. Note que a linha Torque do Motion Actuator produz um movimento de giro no jogador em torno do eixo especificado. No caso, o eixo Y.

Pulo: Para adicionar mais graus de liberdade e tambm para mostrar mas um sensor como controle de entrada, iremos fazer o jogador pular.

Adicione o LogicBricks como exibido na figura acima para o jogador. O ativado atravs do teclado. Mas existe tambm um outro sensor conectado ao controlador AND, o sensor Touch. O controlador Touch somente d um impulso no jogador quando o objeto est tocando algo. Esta correlao lida da seguinte forma Se a tecla A for pressionada E o jogador estiver tocando o terreno (ou piso), ENTO d um impulso produzido pelo atuador de movimento. Este caminho assegura que o jogador no vai dar um novo salto enquanto estiver no ar. Tente deletar a ligao do sensor Touch para o controlador AND e vejo o que acontece... O controle para o pulo est conectado a dois Motion Controllers, ambos tem uma fora de 100.00 para o eixo Z. Porque o valor 100.0 o mximo para cada atuador de movimento, assim ns usamos dois atuadores para obter um impulso maior e produzir um pulo mais alto.

2 - A ENGINE:

Tecnicamente a GameEngine uma central de trabalho com uma coleo de mdulos para propsitos interativos como Fsica, grficos, lgica, som e network. O funcionamento se processa num ambiente de realidade virtual, consistindo da construo de ambientes e comportamentos (como Fsica, animao e lgica). Os elementos deste ambiente tambm chamado objetos do jogo (GameObjects) comportam-se autnomamente aps ajustes de uma ferramenta chamada LogicBricks e propriedades. Para refrescar a nossa memria, os Sensors so os sensores, os Controllers o crebro e os Actuators permitem que a ao acontea, ou seja, so os msculos do objeto. At o momento Controllers podem ser scriptados usandos a linguagem python ou tambm expresses simples. A idia que a criao de blocos lgicos possam ser editados utilizando caminhos alternativos no futuro. Controllers podem ser mudado para determinados centros de controle, como o centro audio visual, centro de movimentao, etc.. 2.2 - Opes da GameEngine:

Com este menu voc pode mudar as opes durante a edio da cena. Correntemente somente a opo Autostart salva com o arquivo. Start Game (tecla P) :: Inicia a GameEngine. Use vertex arrays :: Habilita (verifica) ou desabilita o uso de vertex arrays. VertexArrays normalmente aumenta a velocidade de calculos complexos na cena. Se seu systema no suporta OpenGL vertexarrays voc pode desabilitar a funo. Enable All Frames :: Esta opo verifica se a GameEngine roda em 50 Hertz sem quebra de frames. Isto til enquanto executa para a Targa-Sequence ou quando necessita ter certeza que todas as colises so calculadas sem perdas sobre computadores mais lentos.

Disable Sound :: Habilita e desabilita o som. Disable Mipmaps :: No use mipmap, isto pode aumentar a velocidade de processamento (obviamente vai depender da mquina) Autostart :: Habilita a iniciao automtica ao ler o arquivo. 2.3 Opes em linha de comando para a GameEngine: Quando o Blender carregado com a opo h na linha de comando (shell do Windows ou janela DOS) ele ir imprimir os parmetros da linha de comando. Veja abaixo:bash-2.00$ blender -h Blender V 2.12 Usage: blender [options ...] [file] Render -b -S -f -s -e -a options: Render in background Set scene Render frame and save it Set start to frame (use with -a) Set end to frame (use with -a) Render animation

Animation options: -a Playback -m Read from disk (Don't buffer) Window options: -w Force opening with borders -p Open with lower left corner at , and width and height , Game -g -g -g -g -g Engine specific options: fixedtime Run on 50 hertz without dropping frames vertexarrays Use Vertex Arrays for rendering (usually faster) noaudio No audio in Game Engine nomipmap No Texture Mipmapping linearmipmap Linear Texture Mipmapping instead of Nearest (default) Turn debugging on Disable audio on systems that support audio Print this help text Disable OnLoad scene scripts, use -Y to find out why its -y

Misc options: -d -noaudio -h -y bash-2.00$

-g fixedtime Esta opo roda a engine em 50 hertz sem baixar os frames. Isto til enquanto executa para a Targa-Sequence ou quando necessita ter certeza que todas as colises so calculadas sem perdas sobre computadores mais lentos.

-g vertexarrays Desabilita o uso de vertexarrays. VertexArrays normalmente aumenta a velocidade de calculos complexos na cena. Se seu systema no suporta OpenGL vertexarrays voc pode desabilitar a funo.

-g noaudio Desabilita o som. -g nomipmap No usa mipmap. Isto pode aumentar a velocidade do jogo. -g linermipmap Ajusta o mipmapping de textura para Nearest (default). 2.4 - O RealTimeButtons: O RealtimeButtons o conjunto de botes que permite produzir interatividade entre os objetos 3D presente no ambiente no Blender. O Blender uma ferramenta completa de desenvolvimento para interatividade no mundo virtual incluindo uma gameEngine para a criao de jogos. Tudo isso pode ser feito sem precisar compilar o jogo ou o cenrio. Simplesmente pressione a tecla P e execute tudo em tempo real. Na janela principal de trabalho encontra-se o boto que d acesso ao RealtimeButtons ( ). Aqui voc definir seus blocos lgicos (LogicBricks) e com isso o comportamento de seus objetos.

Informao: A palavra games (jogos) aqui usa para todos os tipos de interatividade 3D. O Blender no existe limitao quanto ao tipo de jogo que se deseja criar. Os RealtimeButtons podem ser logicamente ser separados em duas partes. A parte esquerda contm os ajustes globais para os objetos do jogo (gameObjects). nesta parte que inclui os ajustes geral para a fsica, como amortecimento (damping) ou massa do objeto. Aqui voc pode definir se um objeto precisa ser calculado na cena com fsica, como um ator, ou se vai apenas fazer parte do cenrio, formando o nvel. Ajuste para os objetos: Actor Ativando Actor para um objeto permite a gameEngine a avaliar este objeto. O boto Actor vai habilitar mais botes descritos mais abaixo. Um objeto sem Actor pode formar, fazer parte do cenrio (como os suportes de um estgio) e so vistos por outros atores tambm. Ghost Um objeto Ghost no possui colises, mais ainda possui chave de sensor de coliso. Ideal para criar algum tipo de evento. Dynamic

Esta opo ativada faz com que o objeto esteja sujeito as leis da fsica. Esta opo habilita novos botes que permite definir os atribulos do objeto mais detalhadamente. Rigid Body O Rigid Body (corpo rgido) habilita a fsica avanada da gameEngine. Com isto possvel fazer esferas rolar automaticamente quando elas entram em contado com outros objetos e a frico entre os materiais diferente de zero. A dinmica de corpo rgido deve ser aprimorada em verses futuras da gameEngine. Do Fh Este boto ativa o mecanismo Fh. Com esta opo voc pode criar comportamente de vo ou nado para atores. Um ator voando ou nadando. Rot Fh Com esta opo ajustada o objeto ir rodar em torno do ponto z semelhante (da mesma maneira) sobre o terreno quando usado o mecanismo Fh. (?) Mass A massa de um ator dinmico como um efeito a propriedade que permite especificar como a fora ser aplicada sobre ele. Note que no adianta aumentar a massa de um objeto para ele cair mais rpido que outro. a resistncia do ar que produz diferentes velocidades de queda (sem ar, todos os objetos iro cair da mesma maneira!). Use o valor Damp para simular a resistncia do ar. Size o tamanho da esfera limite. A esfera limite determina a rea na qual a coliso ir ocorrer. Em verses futuras isto no ser limitado a apenas esferas. Provavelmente isto j ocorre com a verso 2.41 Damp Amortecimento geral para o movimento de um objeto. Use este valor para simular amortecimentos em objetos que esto no ar (como em queda) ou na gua. No espao, para simular ar, preciso colocar valores baixos para o amortecimento. Para simular gua, use valores mais altos. RotDamp Faz o mesmo que Damp mas para rotao do objeto. Anisotropic Quando atores movem-se sobre superfcies voc pode definir o atrito entre os objetos. O atrito ir tornar os objetos mais lentos, porque sempre haver uma fora contrria a existente sobre o objeto e que o impulsiona para frente devido ao contato com a superfcie. Ele controlado no ajuste de material dinmico (dynamic material settings). Este atrito trabalha igualmente em todas as direes do movimento. Com o Anisotropic ativado voc pode controlar o atrito independentemente para cada eixo. Isto muito usual em jogos de corrida, onde por exemplo o carro recebe diferentes atritos dependendo do tipo de curva ou situao em que apresenta.

Segue abaixo os ajustes que definiro as propriedade do objeto (gameObject). Estas propriedades podem conter valores que descrevem atributos do objeto como variveis numa linguagem de programao. Use o boto ADD para adicionar propriedades. A verdade que o RealtimeButtons o centro de comendo para adicionar a lgica para seus objetos e ambiente. A lgica consiste de sensores (Sensors), Controllers e Actuators.

Sensors so como sensores de uma forma de vida. Eles reagem a tecla pressionadas, colises, contatos com materiais (touch), eventos com o tempo (timer events) ou valores de propriedades. Os controladores esto coletando eventos dos sensores e so capazes de calcular ento o resultado. Os controladores so o cerebro das operaes. Controladores simplesmente fazem um E (AND). Um exemplo o teste se uma tecla foi pressionada E (AND) um certo tempo passou. H tambm o controlador OR e voc pode usar script em python e expresses para criar comportamentos mais complexos. Os atuadores produzem as aes nos objetos. Um atuador de movimento (Motion Actuator) como um msculo. Um msculo pode aplicar fora nos objetos para mov-los ou gir-los. Existem atuadores para executar animaes pr-definidas (via IPOs), que podem ser comparadas como um reflexo. A lgica conectada por linhas usando o mouse, Sensors para Controllers e Controllers para Actuators. Feito tudo isso corretamente voc ser capaz de rodar o jogo imediatamente! Se descobrir algo no jogo que no est do seu agrado, basta parar a gameEngine, editar o ambiente 3D e reiniciar e assim por diante. Este caminho pode reduzir drasticamente o tempo de desenvolvimento alm de ser mais confortvel!!! 2.5 - Propriedades: Propriedades carregam informaes limites para o objeto, similar a variveis locais em linguagens de programao. Nenhum outro objeto pode normalmente acessar estas propriedades, mas possvel copiar propriedades com Property Copy Actuator.

O boto ADD property adiciona uma nova propriedade. Por default, uma propriedade adicionada do tipo float. Detele um a propriedade com o boto Del. O MenuButton difine o tipo de propriedade. Clique e com o boto esquerdo do mouse escolha no menu o tipo que deseja. O Name: o texto pode ser editado clicando com o boto esquerdo do mouse sobre ele. SHIFTBACKSPACE apaga o nome. Informao: O nome da propriedade case sensitive, desta forma, casa diferente de Casa. O prximo campo diferente para cada tipo de propriedade. Para o tipo booleano so dois botes a escolher: True e False. O tipo string aceita cadeia de caracteres. Entre com uma string clicando no campo com o boto esquerdo do mouse. Os outros tipos usam nmeros para definir um certo valor. possvel editar com teclado ou arrastando o mouse. Tipos: Boolean (Bool) Esta propriedade armazena um valor binrio, ele pode ser True ou False. Integer (Int) Armazena nmeros como 1, 2, 3, 4, ... na faixa de -2147483647 a 2147483647. Float Armazena um nmero de ponto flutuante. String Armazena uma cadeia de caracteres. Timer Este tipo de propriedade faz um update (atualizao) com o atual tempo do jogo em segundos, iniciando do zero.

2.6 - Ajuste no MaterialButtons: Alguns atributos fsicos podem ser definidos com o ajuste de material no Blender. O MaterialButtons pode ser acessado via o cone . Crie um novo material ou escolha um existente com o boto no menu. No MaterialButtons voc precisa ativar o boto DYN para ver os ajustes dinmicos (de dinmica). Restitut Este parmetro controla a elasticidade das colises. Um valor igual a 1.0 ir converter toda energia cintica em energia elstica, ou seja, ser restitudo em fora igual e oposta. Este objeto tem ento uma elasticidade ideal. Um Restitut igual a um far o objeto quicar indefinidamente sobre o terreno. Friction Este valor controla o atrito do objeto. Se o atrito baixo, seu objeto vai deslizar como no gelo, se alto ter um efeito tipo cimento. Fh Force Em conjuno com Do Fh e/ou Rot Fh faz o objeto flutuar sobre uma superfcie. Fh Force controla a fora que sustenta o objeto sobre o terreno (superfcie).

Fh Dist Fh Dist controla o tamanho da rea Fh. Quando o objeto entra nesta rea o mecanismo Fh comea a trabalhar. Fh Damp Controla o arrasto dentro da rea Fh. Valores acima de 0.0 vai causar um arrasto no movimento do objeto dentro da rea Fh. Fh Norm Com este boto ativado o objeto simplesmente sentir uma fora na direo da normal da face do terreno. Isto ir causar um efeito no objeto que o far descer uma rampa ou ladeira. (Veja FhDemo.blend) 2.6.1 - Ajuste de especularidade da gameEngine:

Spec Ajusta o controle de intensidade de especularidade. Hard Ajusta o controle do tamanho da especularidade. Spec color Ativando este boto, voc habilita os ajustes RGB ou HSV para definir a cor da especularidade. 2.7 - Luzes na GameEngine:

Luzes podem ser criadas pressionando ESPAO -> ADD Lamp. Para uma lmpada selecionada possvel abrir as suas propriedades. Estas propriedades so a cor, a energia, etc... A GameEngine totalmente integrada no Blender, existem alguns botes que so somente usuais para animaes lineares. Um ajuste comum a todos os tipos de lampadas a energia e a cor (ajustvel com RGB). Para permitir uma face a receber luz em tempo real na GameEngine do Blender a face precisa estar ajustada para Light no Paint/FaceButtons. Com a camada (Layer) ajustada para a luz e objetos possvel controlar a luz precisamente. Luzes somente afetam faces sobre a mesma camada. Por camada possvel usar 8 luzes (limitao do OpenGL) para luzes em tempo real. Tipos de luzes da GameEngine: Lamp Lamp uma fonte de luz puntiforme. Spot uma lmpada restrica a um espao cnico. Na janela 3D possvel ver as linhas do cone. Use SpotSi para ajustar o ngulo de viso da luz. Sun um tipo de luz direcional. A distncia no afeta sua intensidade. A luz direcional exibida com uma linha que mostra a sua direo. Hemi A luz Hemi no suportada pela game engine. (Este manual antigo, de 2001! Provavelmente a nova verso da engine 2.41 de 2006 j deve dar suporte a este tipo de luz. bom conferir). As luzes Lamp e Spot so sensveis com a distncia. Use Dist:, Quad1: e Quad2: para ajustar isto.

2.8 - O Blender e as Leis da Fsica: Todos os objetos no Blender com a opo Dynamic so avaliados com as Leis da Fsica e definidos pela engine para us-las. As propriedade chave para um objeto dinmico a sua massa. Gravidade, fora e impulsos (limite de coliso) somente trabalham com objetos que possuem massa. Desta forma, somente objetos dinmicos podem experimentar algum tipo de arrasto, ou velocidade de amortecimento (como o que ocorre com o ar ou resistncia da gua). Observao: Note que objetos dinmicos usando dLoc e dRot no apresenta resultados desejados. Uma vez que um objeto dinmico controlado por foras e impulsos, qualquer mudana explcida de posio ou orientao de um objeto pode no corresponder com a velocidade. Para objetos dinmicos melhor utilizar linV e angV para explicitar definies de movimento. Como definimos uma massa para seu objeto dinmico ele ser afetado pela gravidade, causando sua queda no ambiente at encontrar outro objeto com limite para coliso j que o objeto dinmico possui um limite esfrico para coliso. O tamanho da esfera-limite pode ser modificado no parmetro Size:. O valor da gravidade por default est ajustado para 9.81. Voc pode modific-la no WorldButtons com o deslizante Grav. Uma gravidade zero muito til para jogos espaciais ou simulaes!

Informao: Use os ajustes Damp: e RotDamp: para a resistncia do ar ou simular outros ambientes. No use estes ajustes para simular atrito! O Atrito (Friction) pode ser simulado usando os ajustes de material dinmico (dynamic material). Objetos dinmicos possuem limite por duas razes. Ambos tem Do Fh habilitado e tem pequeno arrasto (damping), ou voc est usando um valor Restitut no material dinmico (dynamic material) que bem alto. Se voc no definir um material, por default a restituio ser 1.0. Este o valor mximo para a restituio e ele ir produzir um efeito bastante interessante pois o objeto ficar quicando indefinidamente no piso (elasticidade perfeita!) No primeiro caso, incrementando um arrasto (damping) pode-se reduzir os quiques! No ltimo caso define-se um material para o objeto e ajusta-se o seu valor de restituio para um nmero menor que 1.0. O valor de restituio determina a elasticidade do material. Um valor igual a zero determina que a velocidade de afastamento depois da coliso ser nulo, ou seja, ser um choque inelstico. Um valor igual a 1.0 faz com que o momento seja conservado mesmo depois da coliso. O Damping (arrasto) ir decrementar a velocidade em % por segundo. Damping usual para estabelecer uma velocidade mxima. Um valor alto diminui a velocidade do objeto drasticamente. A velocidade mxima alcanada quando a fora que tende a acelerar o objeto igual a sua desacelerao provocada pela fora de arrasto. Damping usual para produzir tambm oscilaes amortecidas. Friction (atrito) uma fora tangente ao contato entre as superfcies dos objetos. A fora de atrito possui um valor mximo que proporcional a normal, isto , a fora que pressiona os objetos uns contra os outros. Esta proporcionalidade denota o coeficiente de atrito. Um valor alto para a fora de atrito ir permitir um valor alto para o atrito mximo. A regra para o movimento obedece as leis da resultante de foras, ou seja, se a fora aplicada for menor que o atrito mximo, o objeto no se move. Se for igual, ele fica na eminncia do movimento, se for maior o objeto se move. Se no movimento a fora for igual a fora de atrito cintico, o objeto se move com velocidade constante. Para alguns objetos necessrio ter diferentes atritos em direes diferentes. Por exemplo, um skate possui pouco atrito quando se move para frente ou para trs, mas um atrito relativamente alto quando se move para os lados. Isto chamado anisotropic friction (atrito anisotrpico). Selecionando o boto Anisotropic no RealTimeButtons ir habilitar o atrito anisotrpico. Depois de selecionar este boto, trs barras deslizantes vo aparecer com o coeficiente relativo para cada eixo local a ser ajustado. Um coeficiente de atrito ao longo de um eixo igual a zero significa que ao longo desse eixo o atrito zero. Um coeficiente de atrito igual a 1 significa que o atrito mximo aplicado no dado eixo. 2.9 - EXPRESSES: Expresses vlidas Expression type Integer numbers Float number Booleans Strings Properties Sensornames Example 15 12.23224 TRUE, FALSE "Eu sou uma string!" propname sensorname (um nome no LogicBrick)

Expresses aritmticas Expression EXPR1 + EXPR2 EXPR1 - EXPR2 EXPR1 * EXPR2 EXPR1 / EXPR2 EXPR1 > EXPR2 EXPR1 >= EXPR2 EXPR1 < EXPR2 Operaes booleanas Operation NOT EXPR EXPR1 OR EXPR2 EXPR1 AND EXPR2 EXPR1 == EXPR2 Example Not EXPR logical OR logical AND EXPR1 equals EXPR2 Example Addition, 12+3, propname+21 Subtraction, 12-3, propname-21 Multiplication, 12*3, propname*21 Division, 12/3, propname/21 EXPR1 greater EXPR2 EXPR1 greater or equal EXPR2 EXPR1 less EXPR2

Declaraes condicional: IF( Test, ValueTrue, ValueFalse ) Exemplos de expresses: Expresso Resultado 12+12 24 property=="Carsten" TRUE or FALSE "Erwin">"Carsten" TRUE Explicao Adio String comparao entre uma propriedade e uma string Comparao entre Strings

2.10 - Botes de som: Os SoundButtons ( ) so usandos para carregar e gerenciar sons na gameEngine.

No SoundButton possvel chamar sons como visto no screenshot acima (o som, no caso, tem nome: MiniGunFire.wav). Este nome ajustado para o nome do som sample por default. Com o

MenuButtons voc pode abrir um som existente e criar um novo SoundObjects. A cor azul indica que mais de um usurio est utilizando o som, o nmero indica o nmero de usurios. O NumberButton indica quantos SoundObjets partilham o exemplo. Quando o boto pack/unpack pressionado, o sample empacotado dentro do arquivo *.blend. Isto muito importante quando for distribuir arquivos, j que no necessrio ter os arquivos de sons em separado. Tudo fica embutido dentro do prprio arquivo do blender. O boto Play obviamente toca o som e o boto Loop ajusta se o som ir tocar uma nica vez ou se vai executar repetidamente. Dependendo do play-mode no Sound Actuator este ajuste pode estar no disponvel. A barra de ferramenta Vol: ajusta o volume global do som. Pitch: com o pitch voc pode mudar a frequncia do som. Atualmente ele suporta valores entre -12 semitons a +12 semitons. Em Hertz: se seu sample possui frequncia de 1000Hz, o baixo possui 500Hz e o alto 2000Hz. A prxima linha de botes vai definir o som 3D. Com o boto 3D vol ativado (se desativar Fixed) voc habilida o som 3D. Esta medida de volume do som depende da distncia entre a fonte sonora e o observador. O observador a cmera ativa!!! O boto deslizange Attn: ajusta a atenuao do som. No mundo 3D voc pode escalar a relao entre avano e distncia. Por exemplo, se um som passar pela cmera voc deseja ajustar o fator que determina como o som vai se comportar quando passa por voc (observador cmera). A prxima linha de botes define a posio estreo do som. Com 3D pan ativado o volume do canal direito e esquerdo do som vai depender da posio relativa do ouvinte. Quando Fixed est ativado voc pode manualmente ajustar o som com o boto deslizante Pann:

2.11 - Janela de som:

A janela de som usada para visualizarmos o som, ou seja, sua forma de onda. A barra verde indica a posio do som que est sendo executada. Isto pode ser usado para sincronizar o som com uma animao IPO. A parte inferior da janela mostra a durao do som em segundos. 2.12 - Performance e design visando a otimizao para o melhor resultado: Os computadores tem se tornado cada vez mais velozes. Mas ainda sim algumas performances devem ser buscadas na hora de se criar o design do game para que o framerate mantenha constante e o jogo no fique lento e desagradvel ao jogar. Isto no somente um bom estilo em design e programao mas simplesmente essencial para a plataforma que o programa ir rodar e que o Blender capaz de fornecer. Assim, ao criar um jogo, tendo em vista as diversas plataformas, tenha em mente algumas regras importantes de otimizao: 1] Originalmente para um AddObject Actuator precisa estar em uma camada invisvel (muito importante, talvez voc vai usar isto regularmente no futuro). 2] No utilize propriedades em combinao com controladores AND/OR/Expr com a linguagem de script. Existe um controlador python. 3] no divida (reparta) variveis (pyhon) entre scrips. 4] Use poucas interligaes entre coneces LogicBrick, se possvel. 5] Use ALT-D (instncia de malha para novos objetos) quando for fazer uma rplica, isto melhor do que SHIFT-D (copia da malha). 6] polgonos com mapeamento alpha so expansivos, assim use com moderao. 7] A bandeira (flag) para coliso estando desligada melhora bastante a performance. O uso de ghost econmico quando comparado com um objeto fsico regular. 8] Use o menor nmero de polgonos possvel. muito fcil adicionar polgonos a um modelo, no entanto, remover polgonos sem distorcer o modelo difcil. Procure enriquecer os detalhes cobrindo a malha com uma boa textura. 9] Mantenha a resoluo das texturas o mais baixo possvel. Voc pode trabalhar com verses em altaresoluo e ento reduzi-las quando for publicar o jogo (veja UV Texturing). 10] Polgonos ajustados para Light so expansivos. Um acelerador de hardware ir trabalhar bastante com calculos de transformaes e luzes. Use somente se for necessrio e verifique sempre a performance. 11] No lugar de luz em tempo real use VertexPaint para iluminar, escurecer ou pintar faces como sugesto de situaes de luzes. Bastante til e criativo!

3 - GAME LogikBricks: A lgica do jogo no GameBlender est situada no RealtimeButtons. Aqui possvel ligar diferentes LogicBricks (bloco lgicos) juntos. A seguir sero descritos todos os blocos lgicos usados pela engine.

3.1 - SENSORS: Sensors atuam como sensores realmente. Eles pode detectar colises, tato (toque), olfato (perto, proximidade), viso (raio, radar). Tipos de sensores (Sensors):

3.1.1 - AlwaysEste o sensor mais bsico da engine. Ele executa uma tarefa continuamente. Por exemplo, uma pea que fica girando no cenrio pode ser criada usando este recurso (como as moedas que giram e devem ser coletadas)

O boto [x] deleta o sensor da lgica do jogo (gameLogic). Isto acontece sem confirmao, portanto, tome cuidado! O boto a direita do boto de deletar permite a escolha do tipo de sensor (no screenshot acima o sensor Always). Clique sobre ele e ir aparecer uma lista de sensores. O prximo boto o boto do nome do sensor. O Blender assume um nome automaticamente no momento da criao do sensor, mas voc pode renome-lo a vontade. Informao: Nomeie seus LogicBlicks e os objetos no Blender para facilitar a manuteno de suas cenas. Um esquema grfico pode se tornar complexo demais. Com a pequena seta laranja possvel minimizar a janela do bloco lgico. muito til quando o esquema lgico se torna mais complexo. A prxima linha de botes usada para determinar com que frequncia o sensor est atirando. Este um tpico mais complexo, daremos exemplos mais adiante nesta documentao. Informaes gerais sobre pulsos: Pulsos so formas de sensor chave em ambos Controllers e Actuators. Um pulso pode ter dois valores, TRUE e FALSE. Cada controlador sempre avalisado quando ele recebe um pulso, se o pulso for TRUE ou FALSE isto no vem ao caso. A entrada gate de um controlador lembra o valor do ltimo pulso. Isto necessrio para que os controladores iniciem a ligao de mltiplos sensores, ento ele pode ainda fazer uma operao lgica AND ou OR sobre todas as entradas. Quando um controlador est chaveado, e depois da avaliao de todas as entradas, ele pode decidir entre executar um script interno ou enviar um pulso para os atuadores. Um atuador reage a um pulso de maneira diferente, com pulso TRUE ele chaveado em ON (torna-se ativo), com FALSE ele chaveado em OFF.

boto de modo de pulso. O primeiro boto ativa o modo de pulso positivo. A todo momento o sentor atira um pulso e ele um pulso positivo. Isto pode ser usual, por exemplo, mas iniciar um movimento com um Motion Actuator. O prximo boto ativa o modo de pulso negativo, isto pode ser usado para parar o movimento. Informao: se nenhum modo de pulso estiver ativado o sensor Always ir atirar somente uma vez. Isto muito usual para iniciar alguma coisa (movimento, material, etc) no incio do jogo.

O boto de nome f: (no caso do screenshot acima, est ajustado para 41), determina o delay (retardo) entre dois pulsos pelo sensor. O valor de f: dada em frames. O boto Inv inverte o pulso, se positivo (TRUE) vai se tornar negativo (FALSE) e viceversa. Veja o exemplo pulses.blend.

3.1.2 - Keyboard:O sensor Keyboard , talvez, um dos sensores mais usados porque ele prov uma interface entre o Blender e o usurio (mais adiante falaremos da entrada atravs do mouse). Os botes de modo de pulso so comuns para todos os sensores e possuem a mesma funcionalidade descrita no sensor Always. Ativando o boto All keys o sensor vai reagir com qualquer tecla. No campo Hold voc pode por chaves de modificao. Metodos python: setKey(int key); Ajusta a tecla que o sensor vai reagir. Int key getkey(); Captura a tecla que o sensor reagiu. setHold1(int key); Ajusta o modificador chave um. Int key getHold1(); Captura o modificador key one. setHold2 (int key); Ajusta o modificador tecla dois. setUseAllKeys(bool all); Ajusta a opo All keys para todas=TRUE Bool all getUseAllKeys(); Captura o estado da opo All Keys List keys getPressedkeys(); Captura uma lista das teclas pressionadas; List events getkeyEvents(); Captura uma lista dos eventos das teclas.

3.1.3 - Mouse:O sensor mouse inclui os botes usuais presentes nos mouses. O propsito principal desse sensor obviamente criar uma interface entre o usurio e o aplicativo atravs do mouse. Atualmente o sensor capaz de vigiar os cliques ou movimento do mouse. Para capiturar a posio atual do ponteiro do mouse ser preciso usar um scripth Python. Isto ser tratado mais adiante neste documento.

Metodos python: Int xposgetXPosition(); Captura a posio x do mouse. Int yposgetYPosition(); Captura a posio y do mouse.

3.1.4 - Touch:O sensor Touch atira um pulso quando o objeto est designado para tocar um material. Se voc entrar com um nome no campo MA: ento ele somente reage para o material correspondente ao nome caso contrrio ir reagir a todos os materiais. Isto muito til para ativar efeitos para materiais especficos. Por exemplo, o personagem deve morrer ou ter o life abaixado de um dado valor se tocar no material lava.

Metodos python: setTouchMaterial( (char* matname)); Ajusta o material na qual o sensor Touch vai reagir. Char* matname getTouchMaterial(); Captura o material que o sensor Toch reagiu. gameObject obj getHitObject(); Retorna o objeto que foi tocado. List objs getHitObjectList(); Retorna uma lista dos objetos que foram tocados. Veja o exemplo touch.blend.

3.1.5 - Collision:O sensor Collision um sensor geral usado para detector o contato entre dois objetos. Alm disso reage sobre materiais e simplesmente capaz de detectar propriedades de um objeto. Entretando voc pode escolher (comutar) o campo de entrada do material para propriedade clicando sobre o boto M/P.

Metodos python: setTouchMaterial( (char* matname) ); Ajusta o material de coliso na qual o sensor ir reagir. Char* matname getTouchMaterial(); Captura o material de coliso que o sensor reagiu. setProperty( (char* propname) ); Ajusta as propriedades do sensor coliso. Char* propname getProperty(); Captura a propriedade de coliso da reao do sensor. gameObject obj getHitObject(); Retorna o objeto que est colidindo. List objs getHitObjectList(); Retorna a lista de objetos que colidiram. Veja o exemplo collision.blend.

3.1.6 - Near:O sensor near reage a aproximao dos atores ao objeto com o sensor.

Informao: O sensor de proximidade (near) somente sente objetos do tipo Actor (um objeto dinmico um actor). Se o campo Property: estiver vazio, o sensor de proximidade ir reagir a todos os atores na faixa. Se o campo tiver um nome para a propriedade, o sensor ir reagir somente sobre atores que possuem a propriedade do nome. A faixa (esfrica) do sensor de proximidade ajustada com o boto Dist. O valor Reset define que o valor da distncia do sensor de proximidade resetado novamente. Isto muito til para impedir multiplos pulsos quando um ator est justamente na distncia Dist, ou para abrir uma porta a uma certa distncia mas fechar em outra distncia diferente. Veja o esquema de pulsos do sensor:

Mtodos python: setProperty( (char* propname) ); Ajusta a propriedade do sensor de proximidade para reagir. Char* propname getProperty(); Captura a propriedade que o sensor de proximidade reagiu. Exemplos de use de sensor de proximidade podem ser aplicados a inimigos quando o jogador se aproxima, uma porta abrir, etc...

3.1.7 - Radar:O sensor Radar funciona como um radar real. Ele observa um objeto em terno dos eixos indicados com os botes X, Y, Z. Se uma propriedade for digitada no campo Prop:, ele somente reage a objetos que possuem esta propriedade.

No campo Ang: voc pode entrar com o ngulo de abertura do radar. Este ngulo equivalente ao ngulo de viso de uma cmera. O ajuste Dist: determina a distncia em que o sensor radar capar de ver. Objetos no bloqueiam a linha do sinal do sensor radar. Isto diferente do sensor Ray (veja mais adiante). Voc pode combinar ambos para fazer um radar que no capaz de ver atraves de objetos, um muro, por exemplo.

3.1.8 - Property:O sensor Property logicamente verifica uma propriedade ligada (atada) a um mesmo objeto.

O sensor property do tipo Equal verifica a igualdade da propriedade dada no campo Prop: e o valor dado no campo Value:. Se a condio for verdadeira, ele atira um pulso de acordo com o ajuste do modo de pulsos. O Not Equal verifica a inegualdade e ento atira os pulsos.

A propriedade tipo Interval atira seus pulsus se o valor da propriedade estiver dentro do intervalo definido por Min: e Max:. Este tipo de sensor especialmente usual para verificar valores flutuantes (que mudam). Isto mais comum com a propriedade Timer. A propriedade Changed emite pulsos toda vez que a propriedade chamada. Isto, por exemplo, acontece, apesar de que, uma propriedade Actuator, um script python ou uma expresso (? a traduzo est confusa aqui)

Metodos python: SetProperty( (char* propname) ); Ajusta a propriedade para verificar. Char* propname getProperty(); Captura a propriedade para verificar. setType( (int type) ); Ajustes do tipo do sensor propriedade. 1] Equal 2] Not Equal 3] Interval 4] Changed SetValue( ( char* expression) ); Ajusta o valor para verificar (uma expresso). Char* expression getValue(); Captura o valor para verificar (uma expresso). Veja o exemplo property.blend.

3.1.9 - Random:O sensor Random atira um pulso randomicamente de acordo com o ajuste de pulsos (50/50 pick). Informao: Com o seed igual a 0 (zero) o sensor Random trabalha exatamente como o sensor Always. Escolha 0 (zero) para no randmico! Metodo python: SetSeed( (int seed) ); Ajusta o seed para a gerao randmica. Int seed getSeed(); Captura o seed para o sensor Random. Int seed getLastDraw(); Captura o ultimo draw (desenho, configurao) do sensor Random. Veja o exemplo random.blend!

3.1.10 - Ray:O sensor Ray lana um raio para a uma dada distncia determinada pelo boto Range. Se o raio tocar um objeto com a propriedade correta ou o material ajustado o sensor atira um pulso. Informao: Outro objeto bloqueia o raio, assim no possvel ver atravs de paredes!

Sem um nome para o material ou propriedade, o sensor reage a todos os objetos. Mtodos python: List [x,y,z] getHitPosition(); Retorna a posio onde o raio tocou o objeto. List [x,y,z] getHitNormal(); Retorna o vetor normal de como o raio interceptou o objeto. List [x,y,z] getRayDirection(); Retorna o vetor da direo do raio. gameObject obj getHitObject(); Retorna o objeto da interceptado. Veja o exemplo ray.blend! 3.2 - CONTROLADORES: Controladores agem como o crebro da lgica do seu jogo. Este reage a decises simples como conexes de entradas, reage a expresses complexas ou a scripts python que permite a criao de eventos mais complexos como a inteligncia artificial. Tipos de controladores:

3.2.1 - AND:

O controlador AND combina uma, duas ou mais entradas de sensores. Todas as entradas precisam estar ativas (serem vlidas, verdadeiras) para poder passar pelo controlador. Veja o exemplo and.blend.

3.2.2 - OR:

O controlador OR combina uma, duas ou mais entradas de sensores. O controlador deixa o pulso passar se uma ou mais entradas forem vlidas (ativas). Veja o exemplo or.blend.

3.2.3 - Expression:Com o controlador expresso (Expression Controller) voc pode criar lgicas um pouco mais complexas para o jogo com uma linha simples de cdigo. possvel acessar a sada dos sensores ligados para o controlador e acessar as propriedades dos objetos.

Informao: O mecanismo de expresso imprime sadas de erros na janela do console DOS caso alguma falhe. Veja o exemplo expression.blend.

3.2.4 - Python:

O controlador Python o controlador mais poderoso da gameEngine. possvel ligar um script Python a ele, que permite a voc criar controlar seus objetos do jogo (gameObjects) desde um simples movimento de corrida at complexos movimentos programados para simular inteligncia artificial. Digite o nome do script que voc deseja ligar ao controlador python no campo Script:. O script precisa existir na cena, caso contrrio, o Blender vai ignorar o nome que digitou. Observao: Nomes no Blender so case sensitive! Assim, um script player diferente de Player! Mtodos python: Actuator* getActuator( char* name , ); Retorna o atuados com name. List getActuators(); Retorna uma lista python de todos os atores conectados. Sensor* getSensor( char* name , ); Retorna o sensor com name. List getSensors(); Retorna uma lista python de todos os sensores conectados.

3.3 - ATUADORES: Atuadores so blocos lgicos de execuo. Eles podem ser comparados com msculos que do vida aos objetos. Tipos de atuadores:

3.3.1 - Motion:

O atuador de movimento sem dvida o atuador mais importante. Ele move, produz rotao ou aplica velocidade em objetos. Um caso simples de uso do atuador de movimento , obviamente, para mover objetos. Isto feito com o valor dLoc na terceira linha. Toda vez que o atuador ativado por um impulso ele move o objeto uma dada quantidade colocada em dLoc. Existem trs valores correspondendo aos eixos X, Y e Z. Assim quando voc entra com um valor 1.0 no primeiro campo o objeto ser movido de uma unidade por vez no game (o relgio na gameEngine produzem ticks de 1/25 segundos). O boto chamado L entre cada linha do atuador de movimento determina se o movimento aplicado precisa ser tratado como global ou local. Se o boto estiver pressionado (verde escuro) o movimento aplicado baseando-se nos eixos locais do objeto. Se o boto no estiver pressionado o movimento aplicado baseado na orientao global (do mundo). Force: Os valores desta linha aplica foras no objeto. Isto trabalha somente com objetos dinmicos. Torque: Os valores desta linha agem com foras que produzem movimento de rotao (torque). Trabalha somente com objetos dinmicos. Valores positivos gira o objeto no sentido horrio. dLoc Move o objeto como j foi explicado anteriormente. dRot Gira o objeto de um dado ngulo (36 rotao total, completa) linV Ajusta a velocidade do objeto para um dado valor. angV Ajusta a velocidade angular de um dado valor. Valores positivos giram no sentido horrio.

O atuador de movimento inicia o movimento do objeto quando recebe um pulso (TRUE) e para quando recebe um pulso (FALSE). Para pegar um movimento numa certa distncia, preciso enviar um pulso FALSE para o atuador sempre. Metodos python: setForce ( list [x,y,z] , bool local ); Ajusta o parmetro Force (fora) para o atuador de movimento. List [x,y,z] getForce( ); Captura o parmetro Forcedo atuador de movimento. setTorque( list [x,y,z] ); Ajusta o parmetro Torque do atuador de movimento. List [x,y,z] getTorque( ); Captura o parmetro Torque do atuador de movimento. setdLoc( list [x,y,z] ); Ajusta o parmetro dLoc do atuador de movimento. List [x,y,z] getdLoc( ); Captura o parmetro dLoc do atuador de movimento. setdRot( list [x,y,z] ); Ajusta o parmetro dRot do atuador de movimento. List [x,y,z] getdLoc( ); Captura o parmetro dRot do atuador de movimento. setLinearVelocity( list [x,y,z] ); Ajusta o parmetro linV do atuador de movimento. List [x,y,z] getLinearVelocity( ); Captura o parmetro linV do atuador de movimento. setAngularVelocity( list [x,y,z] ); Ajusta o parmetro angV do atuador de movimento. List [x,y,z] getAngularVelocity( ); Captura o parmetro angV do atuador de movimento.

3.3.2 - Constrait:Com o atuador Constraint possvel limitar a liberdade de um objeto de um certo grau.

Com o MenuButton voc especifica o canal de que liberdade deseja limitar, por exemplo, eixo X, Y ou Z (no screenshot acima, est travado o eixo Y). Com o NumberButtons Min e Max

definido os valores mnimos e mximos para o valor dos limites do movimento. Para limitar um objeto em mais de um canal simplesmente use mais de um atuador Constraint. Metodos python: setDamp (int damp); int damp getDamp( ); setMin (int min); int min getMin( ); setMax( int max); int max getMax ( ); setMin (int min); int min getMin( ); setLimit (? Limit ); int limit getLimit( );

3.3.3 - IPO:

O atuador IPO executa uma animao de IPO-curves para um objeto. Se o objeto possui um filho (child) com um IPO e voc ativar o Child no atuador, o IPO vai executar a animao do Child. Modos IPO suportados pela engine: Play Executa o IPO do frame inicial determinado por Sta at o frame final determinado por End toda vez que um pulso positivo atinge o atuador. Qualquer outro pulso enviado durante a execuo ser desconsiderado. Ping Pong Executa o IPO do frame inicial Sta para o frame final End ao primeiro pulso positivo que atinge o atuador. O proximo pulso recebido ir executar o IPO de End at Sta. Flipper Executa o IPO enquanto o pulso for positivo. Quando o pulso for negativo (nenhum enviado) o IPO executado do frame corrente at o frame Sta.

Loop Stop Executa o IPO em loop a enquando o pulso for positivo. Ele para na posio corrente se o pulso for negative (cessar). Loop End Executa o IPO repetidamente enquanto existir um pulso positivo. Quando o pulso para ele continua a executar o IPO at atingir o final do loop e ento para a execuo. Property Executa o IPO para o frame indicado na propriedade digitada no campo Prop: Atualmente os seguintes IPOs so suportados pela gameEngine: Mesh Objects Loc, Rot, Size e Col Lamps Loc, Rot, RGB, Energy Cameras Loc, Rot, Lens, ClipSta, ClipEnd Metodos python: setType (??? , ); int type GetType ( ??? , ); SetStart ( int frame , ); SetEnd ( int frame , ); Int frameGetStart ( ); Int frameGetEnd ( );

3.3.4 - Camera:

O atuador Camera tenta similar um cameraman. Ele focaliza um ator no campo de viso e tenta permanecer a uma certa distncia do mesmo. Os movimentos so suaves e h alguns retardos na reao do movimento em relao ao objeto. Voc seleciona o objeto que deseja que a cmera vai acompanhar no campo OB:, digitando o nome do objeto. O campo Height: determina a altura que a cmera ir permanecer sobre o objeto.

Min: e Max: corresponde a menor e maior distncia da cmera ao objeto. Os botes X e Y especificam os eixos que a cmera vai permanecer na visualizao do objeto. D uma olhada no exemplo camera.blend.

3.3.5 - Sound:

O atuador Sound executa um SoundObject que foi previamente carregado com os SoundButtons (isto j foi explicado mais acima). Modos de execuo do som: Play Stop Executa o som enquanto ouver um pulso positivo. Play End Executa um som at o final quando um pulso positive recebido. Loop Stop Executa e repete o som quando um pulso positivo fornecido. Loop End Toca o som repetidamente, quando um pulso positivo fornecido. Quando o pulso para o som executado at o final. Veja o exemplo sound property.blend.

3.3.6 - Property:

Modos de propriedades: Assign Assume um valor ou expresso (dado no campo Value) para uma propriedade. Por exemplo, uma expresso como Proppy + 1 o Assign trabalha como um Add (adicionador). Para strings preciso usar quotas para adicionas as strings (...). Add Adicione o valor ou resultado de uma expreso para uma propriedade. Para subtrair simplesmente d um valor negativo para o nmero no campo Value:.

Copy

Isto copia uma propriedade (neste screen Prop: Sprop) do objeto com o nome dado em OB: Sphere dentro da propriedade Prop: Proppy. Isto uma maneira fcil de trocar informaes entre objetos. Metodos python: SetProperty ( char* name); *char name GetProperty ( ); SetValue (char* value); Char* value GetValue( );

3.3.7 - Edit Object:Este atuador permite a ao sobre objetos, como adicionar novos objetos, deletar objetos, etc... Tipos de Edit Object: Add Object:

O atuador Add Object adiciona um objeto na cena. O novo objeto vai estar orientado ao longo do eixo X do objeto criado. Informao: Mantenha o objeto a ser adicionado sobre uma camada separada e invisvel ou ele no vai trabalhar como esperado. Entre com o nome do objeto a ser adicionado no campo OB:. O campo Time: determina quando tempo (em frames) o objeto deve existir. O valor 0 denota que ele vai existir para sempre na cena. Tome muito cuidado para no tornar a engine muito lenta pela adio de muitos objetos na cena. possvel usar outros eventos para adicionar ou eliminar objetos na cena (colises, properties, etc) usando o LogicBricks. Com os botes linV possvel dar uma velocidade inicial ao objeto no momento que ele criado. Esta velocidade dada em relao as componentes X, Y e Z. O boto L considera a orientao local. Quando ele estiver pressionado a velocidade interpretada sobre o eixo local do objeto adicionado. Metodos python:

setObject ( char* name); Ajusta o objeto a ser adicionado. Char* name getObject( char* name); Captura o nome do objeto. setTime (int time); Tempo em frames em que o objeto vai existir depois de adicionado a cena. Um valor zero o objeto estar na cena eternamente, a no ser que seja eliminado por outra propriedade. Int time getTime ( ); Captura o tempo de vida do objeto adicionado. setLinearVelocity ( list {vx, vy, vz} ); Ajusta a velocidade linear do objeto (em unidades da gameEngine) adicionado. List [vx, vy, vz] getLinearVelocity ( ); Ajusta a velocidade linear do objeto (em unidades da gameEngine) do atuador. gameObject* getLastCreateObject ( ); Captura o ponteiro do ultimo objeto criado. Isto permite a manipulao dinmica do objeto adicionado. End Object:

O tipo End Object simplesmente finaliza a vida do objeto na cena quando o atuador recebe um pulso. Isto muito usual para finalizar a existncia de balas depois de colises ou algo similar. Quando o personagem pega uma pea e esta deixa de existir na cena, etc... Replace Mesh:

O tipo Replace Mesh substitui a malha de um objeto por uma nova dada pelo campo ME:. Lembre-se que o nome da malha no implicitamente igual ao nome do objeto. Metodos python: setMesh( char* name); ajusta a malha para ser substituida pelo atuador para name. Char* name getMesh( ); Captura o nome da malha do atuador ReplaceMesh.

Track to:

O tipo Track to gira o objeto apontando-o sempre para um objeto alvo especificado no campo OB:. Normalmente isto acontece somente no plano x/y do objeto, caso o boto 3D no esteja pressionado). Com 3D pressionado o objeto ir orientar-se em trs graus de liberdade. O parmetro Time: ajusta a rapidez com que o objeto capaz de acompanhar o alvo. Um valor zero faz com que o objeto acompanhe o alvo imediatamente, valores acima de zero produz um retardo dando um efeito mais suave. Metodos python: setObject (char* name); char* name getObject( ); setTime( int time); int time getTime( ); setUse3D( ); bool 3d setUse3D( );

3.3.8 - Scene:O atuador Scene (Cena) utilizado para ligar cenas e cmeras na gameEngine. Escolha a ao com o MenuButton e entre com uma cmera existente ou o nome de cena no campo de texto. Se o nome no existe, o boto ficar escuro. Reset:

Simplesmente reinicia e reseta a cena. o mesmo efeito de para o game com ESC e reiniciar com P. Set Scene:

Vai para a cena indicada no campo texto. Durante o swith todas as propriedades so resetadas. Metodos python: setScene( char* scene); Ajusta a cena que deseja exibir. Char* scene getScene( ); Captura o nome da cena do atuador. Set Camera:

Muda para a camera indicada no campo texto. Metodos python: setCamera( char* camera ); Ajusta para a cmera que deseja mudar. Char* camera getCamera( ); Captura o nome da cmera do atuador. Veja o exemplo SetCamera.blend.

3.3.9 - Random:Uma funo indispensvel para jogos so as que geram nmeros randmicos de modo a gerar variaes em movimentos ou comportamentos de inimigos. O parmetro Seed um valor que alimenta o gerador randmico com um valor inicial para a gerao de nmeros. O computador gera nmeros pseudo-randmicos que iro se repetir a cada execuo. Voc ir pegar a mesma sequncia de nmeros se escolher o mesmo valor de Seed. Obviamente valores diferentes iro gerar uma sequncia randmica diferente. Preencha o nome da propriedade que deseja ser colocada como nmeros randmicos no campo Property:. Tipos de atuadores randmicos: Boolean Constant:

Este no uma funo totalmente randmica, use este tipo para testar a lgica do jogo com valores TRUE ou FALSE. Boolean Uniform:

Este o tpico randmico classico dos 50-50 por cento, ou meio-a-meio. As chances dos resultados TRUE e FALSE so iguais. Isto equivalente a jogar uma moeda. Boolean Bernoulli:

Esta funo randmica resulta num valor booleano de TRUE ou FALSE. No entanto, possvel controlar as chances de haver entre um TRUE e FALSE com o parmetro Chance. Uma chance de 0.5 vai trabalhar da mesma forma que o Bool Uniform. Uma chance de 0.1 vai resultar em 1 em cada 10 casos de sair TRUE. Integer Constant:

Para testar a lgica com um valor dado no campo Value:. Integer Uniform:

Este tipo de propriedade randmica produz um valor inteiro entre (e incluindo) um dado Min: e Max:. No exemplo ilustrado no screenshot acima o atuador vai escolher um valor entre o mnimo (no caso 1) e mximo (no caso 6).

Integer Poisson:

Os nmeros randmicos so distribudos a partir de uma mdia dado por Mean: (?) Float Constant:

Para depurar a lgico do jogo com um dado valor. Float Uniform:

Vai gerar um nmero de ponto flutuante entre um valor Min: e Max:. Float Normal:

Retorna um nmero randmico em torno do nmero dado em Mean: e com um desvio padro dado por SD:. Float Negative Exponential:

Retorna um nmero randmico que descrito por algum processo natural como o decaimento radioativo ou vidas de bactrias. O ajuste Half-life time: ajusta a mdia desta distribuio.

Metodos python: setSeed (int seed); Ajusta o seed (o valor inicial do gerador dos nmeros randmicos) Int seed getSeed( ); Captura o seed do atuador. Float para1 getPara1( ); Captura o primeiro parmetro da distribuio randmica selecionada. Float para2 getPara2( ); Captura o segundo parmetro da distribuio randmica selecionada. setProperty( char* propname ); ??? Char* propname getProperty( ); Captura o nome da propriedade do atuador. setDistribution ( int dist ); ?? Int dist getDistribution ( ); Captura o mtodo de distribuio randmica do atuador.

4 - UV Texturing: Textura produzem um grande impacto visual sobre jogos ou ambientes interativos. Com texturas possvel criar detalhes em malhas com poucos polgonos. Com texturas que possuem canal alfa possvel criar coisas como janelas, fendas ou grades sem a necessidade de modelar diretamente. 4.1 - Formatos de arquivos disponveis: O Blender usa o OpenGL para desenhar toda a sua interface a tambm para a gameEngine. Este caminho permite utilizar seus aplicativos numa srie de plataforma diferente. No que se refere ao uso de texturas deve-se prestar a ateno em vrias coisas antes de rodar o jogo do blender em outras plataformas. Um game multiplataforma deve funcionar em todas as plataformas e o uso correto das texturas depende disto. - a altura e largura da textura devem ser mltiplos de 64, por exemplo, 64x64, 64x128, 128x64, etc. - no recomendvel utilizar texturas com resolues acima de 256x256 pois nem todas as placas de vdeo suporta imagens de alta resoluo. 4.2 - O Blender pode usar os seguintes formatos de texturas em tempo real: Targa O arquivo Targa ou TGA (formato .tga) um tipo de arquivo de imagem comprimido. Inclui canal alfa. Iris Iris (.rgb) um arquivo nativo do formato IRIX. um arquivo de imagem comprimido. Inclui canal alfa.

Jpeg um tipo de arquivo de imagem comprimido muito utilizado em fotos. Devido ao tamanho reduzido muito usado para exibio em webs. Ele no possui canal alfa e devido a sua qualidade baixa no recomendvel como formato para trabalho de design de fases para um jogo. Manuseando as mdias: Para a publicao e fcil manuseio dos arquivos Blender possvel incluir todas as fontes dentro da cena. Normalmente texturas, sons e fontes no so includas no arquivo quando o mesmo salvo. Desta forma quando voc carrega o arquivo .blend todas as fontes so carregadas dos seus respectivos diretrios de origem. Mas se deseja distribuir o game possvel comprimir todas as mdias para serem salvas juntos com o arquivo do Blender, desta forma poder distribuir o jogo num arquivo nico que contm todas as mdias. Isto permite tambm a proteo das mdias usadas no jogo. No menu FILE tem uma opo PACK FILE, clicando nesta opo ir aparecer uma caixa de presente na faixa do menu superior. Isto indica que todos os arquivos usados na mdia sero salvos automaticamente junto com o arquivo .blend, criando, desta forma, um arquivo nico com toda mdia empacotada.

Observao: No texto original existe a funo Advanced Unpack mas no Blender 2.41 no encontrei esta funo, pelo que no traduzi esta parte! 4.3 - O editor UV: O editor UV totalmente integrado ao Blender e permite mapear textura sobre as faces dos modelos. Cada face pode ter suas coordenadas individualmente texturizadas. Isto pode ser combinada com vrtices coloridos que permitem escurecer ou clarear a textura ou tambm pint-las.

Para iniciar o editor UV entre em modo de seleo de faces pressionando a tecla F ou no menu de MODO selecione a opo UV face select. A malha agora desenhada z-buferizada. Pressionando ALT-Z possvel alternar entre o modo texturizado e slido, isto ajuda na visualizao da textura. Para selecionar um objeto basta clicar sobre ele com o boto direito do mouse, o mesmo acontecendo para seleo de faces. Voc pode selecionar (ou deselecionar) todas as faces pressionando a tecla A no modo de edio ou usando a tecla B para alternar entre a seleo circulo (o raio pode ser alterado com o boto de rolar central) e retangular. Lembre-se que para entrar no modo de edio basta pressionar a tecla TAB. 4.3.1 - A janela de manipulao de imagens (Image Window): Para acessar a janela de manipulao de imagens basta ir no cone de mudana do tipo de janelas disponveis e escolher a opo UV/Image editor.

Veja abaixo o aspecto da janela de manipulao de imagem UV.

Na parte inferior da janela segue o menu correspondente ao UV/Image editor. O View exibe os modos de exibio da janela e a visualizao das ferramentas de pintura e propriedades. Na ferramenta de pintura possvel escolher vrios tipos de pincis e as cores correspondentes na paleta de cores que deseja usar. E o View Properties permite o ajuste dos vrtices no UV vertex e o boto Anim permite o uso de animaes de texturas.

O Select exibe um menu com as selees possveis para vrtices ou faces da malha para edio.

Em Image possvel carregar uma imagem, salvar, pintar a textura, desempacotar uma imagem para um diretrio (no possvel pintar uma imagem que esteja empacotada).

Em UVs ficam os possveis ajustes de UV sobre a malha. Veja o screenshot abaixo:

5 - Python: Python um interpretador, interativo, linguagem orientada a objetos. Python combina poder com uma sintaxe extremamente fcil. Ele possui mdulos, classes, exceptions, tipos de dados com alto nvel de dinamismo e tipos dinmicos. Python multiplataforma e no necessrio IDEs elaboradas para programar nele. Python gratuto e pode ser usado para fins comerciais. 5.1 - O janela de texto (TextWindow): O TextWindow uma janela de texto simples mas bastante usual, totalmente integrada ao Blender. O propsito principal desta janela escrever scripts em Python, mas ela tambm muito usual para escrever comentrios sobre o arquivo Blender ou para explicar o propsito da cena para outros usurios.

A janela de texto pode ser exibida pressionando-se SHIFT-F11 ou atravs do cone no meno inferior da janela.

Em File possvel abrir um arquivo de texto ou python e criar um novo. No primeiro cone a direito de File possvel colocar o editor no modo fullscreen. O icone do meio permite exibir as linhas para controle e o cone AB habilita / desabilita o exibio de palavras chaves em cores, como comandos ou comentrios. O boto Screen altera o tamanho da fonte e o Tab determina a distncia da tabulao. Segurando o boto esquerdo do mouse possvel selecionar textos para edio. Alguns comandos via teclado so possveis tambm para edio. Segue abaixo uma lista das teclas usadas: Teclas de comando da janela de texto: ALT C Copia para o buffer o contedo do texto selecionado. ALT X Corta o contedo do texto selecionado (elimina). ALT V Cola o texto que est armazenado no buffer no local onde est o cursos na janela de texto. ALT O L um texto. Vai aparecer uma janela de arquivos.

CTRL R Rel o texto atual, muito usual para edio com editores externos. SHIFT ALT F Abre um menu pop-up. Clicando com o boto direito do mouse tambm abre um pop-up. ALT J Abre uma janelinha onde possvel especificar o nmero de linha que deseja pular para edio. ALT U Undo (desfazer) ilimitado para a janela de texto. ALT R Refaz o ltimo Undo. CTRL A Marca o texto todo da linha. 5.2 - Python para Games: Com Python integrado dentro da gameEngine possvel influenciar LodicBricks, chamando seus parmetros e reao sobre eventos ligados pelos LogicBricks (blocos lgicos). possvel influenciar um objeto no jogo pelo controlador python diretamente. possvel mover, aplicar foras ou capturar informaes do objeto. 5.2.1 - Bsico do game Python: O primeiro passo para usar o python em jogos adicionar um sensor e um controlador python para um dado objeto. Ento basta adicionar um novo arquivo de texto na janela de texto (TextWindow). Preencher o nome do arquivo de texto no campo Script: com o nome do arquivo python que servir de controlador do objeto. Abaixo segue um screenshot exibindo o processo:

Agora entre com o seguinte script na janela de texto (no necessrio digitar as linhas que iniciar com # pois estas so apenas comentrios).1 2 3 4 5 6 7 8 9 10 # first gamePython script # gets the position of the owning object # and prints it on the console import GameLogic controller = GameLogic.getCurrentController() owner = controller.getOwner() print owner.getPosition()

O comando print e os erros do interpretador Python sero exibidos na janela console do DOS quando inicia o blender. Isto muito usual para a visualizao dos resultados enquanto programa em python. Este script bsico somente imprime e posio do objeto que prprio do controlador python. Mova o objeto e ento reinicie a gameEngine com a tecla P e veja o resultado na janela do DOS. Agora vamos explicar as funes presente no script linha por linha. A linha 5 a linha mais importante do programa. Importamos o mdulo GameLogic que o basico de todos os gamePython no blender. Na linha 7 capturamos o controlador, que executa o script e assume a varivel controller. Na linha 8 ns usamos o controlador que capturamos na linha 7. Assumimos a varivel owner. Agora temos um owner (prprio refere-se a pea) e podemos usar metodos para fazer coisas com ele. No exemplo, na linha 10 usamos o mtodo getPosition() para imprimir a posio do gameObject como uma matriz de valores X, Y e Z. Voc pode usar vrios outros mtodos que um objeto pode ter baseado em script python. Este o propsito desta documentao, mostrar os principais mtodos python. Adicione a seguinte linha no final do script.1 print dir(owner)

Inicie a gameEngine novamente, pare e d uma olhada na anela do console do DOS. Voc ter a seguinte saida: [0.0, 0.0, 0.0] ['applyImpulse', 'disableRigidBody','enableRigidBody', 'getLinearVelocity', 'getMass', 'getOrientation', 'getPosition', 'getReactionForce','getVelocity', 'restoreDynamics', 'setOrientation', 'setPosition', 'setVisible', 'suspendDynamics'] A primeira linha mostra a posio do objeto na cena. As prximas linhas mostram os mtodos que podem ser aplicados ao owner. Por exemplo, se voc usar o mtodo getMass ele vai retornar a massa de um objeto dinmico. Com o conhecimento da funo dir() voc pode perguntar ao python informaes sobre o objeto sem precisar consultar qualquer documentao externa. 5.3 - Exemplos para jogos com implementaes Python: Aqui voc ir encontrar alguns exemplos pequenos de uso do python na gameEngine. Explore os arquivos .blend e procure entender completamente como os exemplos foram feitos. Use as rotinas em suas cenas e projetos. 5.3.1 - Movendo objetos usando python: Voc pode usar as funes setPosition() ou applyImpulse() para mover um objeto com script python. Outro caminho usando os campos de ligao para um atuador de movimento (Motion Actuator). O script descrito abaixo mostra o uso deste mtodo para mover objetos num caminho randmico, isto similar a um movimento browniano de molculas ou bactrias.

1 # Usa python para ajustar o atuador e mover objetos 2 # 29/03/2001 [email protected] 3 4 # CTRL-LEFTARROW para fullscreen 5 6 7 # Importa o modulo GameLogic 8 import GameLogic 9 10 11 # Captura o controlador (controller - which carries the script) 12 contr = GameLogic.getCurrentController() 13 14 # e o atuador (por nome!) 15 move=contr.getActuator("move") 16 17 # Captura um random float (0.0 ... 1.0), este um gerador randmico 18 # que gera sequncias diferentes toda vez que a engine iniciada! 19 random = GameLogic.getRandomFloat() 20 21 # Ajusta o dRot e dLoc in the attached activator (observe que o ltimo 22 # "1", para movimento local! 23 move.setDRot(0,(random-0.5)/5,0,1) 24 move.setDLoc(random/5,0,0,1) 25 26 # Ativa o atuador 27 GameLogic.addActiveActuator(move,1)

Observe que o uso da funo getRandomFloat() usado para gerar nmeros randmicos sem usar o atuador Random. Estes nmeros randmicos so diferentes toda vez que a engine iniciada. A ltima linha ajusta os valores no atuador e o ativa com addActiveActuator().

A figura acima mostra os blocos lgicos usados. Tenha certeza de colocar o nome do atuador corretamente pois o script referenciado para este nome no atuador. O atuador add object (adicionar objeto) est presente para criar a trilha a medida que o objeto se move!

5.3.2 - Verificao simples de visibilidade:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # Simple visibility check import Rasterizer # # # # experimental visibility flag it will hide all objects so objects must be set visible using this script

Rasterizer.enableVisibility(1) # get controller and sensor cont = GameLogic.getCurrentController() sensor = cont.getSensor("viznear") # Set the player visible ;-) sensor.getOwner().setVisible(1) # now set all objects in the range of the near # visible. Try to change "Dist" and "Reset" objects = sensor.getHitObjectList() if objects: for obj in objects: obj.setVisible(1)

Para uma verificao simples de visibilidade usando o Near Sensor (sendor de proximidade) para seu jogador mostrada no screenshot abaixo. O sensor Near vai chamar o script de visibilidade com uma lista de objetos que esto dentro do sensor de proximidade definida por Dist e Reset. Tenha certeza que verificar que o pulso esteja no modo positivo para f:0.

D uma olhada no exemplo: visibility.blend

5.3.3 - Cursor do mouse com Python:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # Mouse cursor control import GameLogic import Rasterizer # Get the dimensions of the game window ww = Rasterizer.getWindowWidth() wh = Rasterizer.getWindowHeight() # calculate the aspect (in full screen the aspect of the CRT) aspect = float(wh)/ww # With this value you can calibrate the mouse to the 3D Window actionx=28.0 actiony=actionx*aspect #Get controller, sensor and owner c = GameLogic.getCurrentController() sensor = c.getSensor("mouse") owner = c.getOwner() # I use properties for debugging purpose (use wireframe to see) owner.x = float(sensor.getXPosition()-ww/2)/ww*actionx owner.y = float(sensor.getYPosition()-wh/2)/wh*actiony # Set the position of the crosshair directly # (see SCA, there is no Actuator) owner.setPosition([owner.x,0,-owner.y])

O script chamado pelo Mouse Sensor (sensor do mouse), ajustado para chave sobre movimento. Observe o uso de duas propriedades, X e Y, elas so usadas para fazer um debug necessrio para o script trabalhar.

D uma olhada no exemplo: MG1.blend

5.4 - GamePython: Documentao por Mdulo 5.4.1 - Mdulo GameLogic: SCA_PythonController getCurrentController ( ); Retorna o controller object que carrega o script (?) Void AddActiveActuator ( actuator , bool active); Este mtodo faz o atuador (actuator) ativo (active=TRUE) ou inativo (active=FALSE). Float GetRandomFloat ( ); Esta funo retorna um nmero randmico na faixa de 0.0 at 1.0. O seed capturado do sistema de tempo de modo a gerar sequncias de nmeros randmicos diferentas cada vez que o programa executado. setGravity ( [gravityX, gravityY, gravityZ] ); Ajusta a gravidade no mundo. 5.4.2 - Mdulo Rasterizer: Int GetWindowWidth ( ); Esta funo retorna a largura da janela do Blender com o game em execuo. Int GetWindowHeight ( ); Esta funo retorna a altura da janela do Blender com o game em execuo. Void MakeScreenshot ( char* filename); Esta funo escreve uma screenshot no disco no formato TGA. EnableVisibility ( bool usevisibility ); Isto ajusta todos os objetos para invisvel quando usevisibility for TRUE. O jogo pode ento ajustar a visibilidade atrs somente para objetos necessrios (?). showMouse ( bool show); Exibe o cursor do mouse quando show for ajustado para TRUE enquanto o jogo estiver rodando. setBackGroundColor ([float R, float G, float B]); setMistColor ([float R, float G, float B]); setMistStart ( float Start ); setMistEnd (float end);

5.4.3 - Mdulo GameKeys: Este modulo apenas exibe todos nomes das teclas presentes no teclado (AKEY = 65, etc...) AKEY, ..., ZKEY ZEROKEY, ..., NINEKEY CAPSLOCKKEY LEFTCTRLKEY, RIGHTCTRLKEY LEFTALTKEY, RIGHTALTKEY LEFTSHIFTKEY, RIGHTSHIFTKEY ESCKEY, TABKEY, RETKEY, SPACEKEY, LINEFEEDKEY BACKSPACEKEY, DELKEY, SEMICOLONKEY, PERIODKEY, COMMAKEY QUOTEKEY, ACCENTGRAVEKEY, MINUSKEY, VIRGULEKEY, SLASHKEY BACKSLASHKEY, EQUALKEY, LEFTBRACKETKEY, RIGHTBRACKETKEY LEFTARROWKEY, DOWNARROWKEY, RIGHTARROWKEY, UPARROWKEY PAD0, , PAD9 PADPERIOD, PADVIRGULEKEY, PADASTERKEY, PADMINUS, PADENTER PADPLUSKEY F1KEY, , F12KEY PAUSEKEY, INSERTKEY, HOMEKEY, PAGEUPKEY, PAGEDOWNKEY ENDKEY 5.5 - Mtodos padro para blocos lgicos (LogicBricks): Todos os blocos lgicos possuem os seguintes mtodos: getOwner ( ); Este rotina retorna o owner que o gameObject que foi assumido pelo LogicBrick. setExecutePriority ( int pri ); ? Int pri getExecutePriority ( ); ? 5.5.1 - Mtodos padro para sensores: Todos os sensores seguem os mtodos abaixo: Int isPositive ( ); Se o sensor atira pulsos positivos. Bool getUsePosPulseMode ( ); Retorna TRUE se o gerador de pulso positivos est ativo. Retorna FALSE para o caso contrrio. setUsePosPulseMode (bool flag); Ajuste o flag para TRUE para ligar o modo de pulso positivo. FALSE para chavear para o modo de pulso off. Int getPosFrequency( ); Retorna a frequncia de updates dos pulsos no modo pulso positivos. setPosFrequency ( int freq ); Ajusta a frequncia de updates no modo de pulso positivo. Se a frequncia negativa, ajustado para 0.

Bool getUseNegPulseMode ( ); Retorna TRUE se o gerador de pulso negativos est ativo. Retorna FALSE para o caso contrrio. setUseNegPulseMode ( bool flag); Ajuste o flag para TRUE para ligar o modo de pulso negativo. FALSE para chavear para o modo de pulso off. Int getNegFrequency ( ); Retorna a frequncia de updates dos pulsos no modo pulso negativos. setNegFrequency ( int freq); Ajusta a frequncia de updates no modo de pulso negativo. Se a frequncia negativa, ajustado para 0. Bool getInvert ( ); Retorna se o pulso do sensor est invertido ou no! setInvert ( bool flag ); Ajuste para TRUE para inverter a resposta do sensor e para FALSE para obter a resposta normalmente. 5.5.2 - Metodos padro para controladores: Controladores possuem os seguintes mtodos: Actuator* getActuator (char* name); Retorna o atuador com nome (name). List getActuators ( ); Retorna uma lista python de todos os atuadores conectados. Sensor* getSensor (char* name); Retorna um sensor com nome (name). List getSensors ( ); Retorna uma lista python de todos os sensores conectados. 5.5.3 - Metodos padro para gameObjects: Game objects (objetos do jogo) que voc captura com getOwner() possuem os seguintes mtodos: ApplyImpulse ( list [x,y,z] , ); Aplica um impulse do gameObjetc (N*s). DisableRigidBody ( ); Desabilita a dinmica de corpo rgido para o gameObject. enableRigidBody ( , ); Habilita a dinmica de corpo rgido para o gameObject. setVisible ( int visible );

Ajusta a visibilidade do gameObject para visvel (int visible = 1) ou invisvel (int visible = 0), este estado somente ter efeito no frame seguinte. Use enableVisibility (bool usevisibility); do mdulo Rasterizador para tornar todos os objetos invisveis. Veja a seo 5.3.2. setPosition ( [x,y,z] ); Ajusta a posio do gameObject de acordo com as coordenadas X, Y e Z. Pylist [x,y,z] getPosition ( ); Captura a posio do gameObject das coordenadas X, Y e Z. Pylist [x,y,z] getLinearVelocity ( ); Retorna uma lista com as components X, Y e Z da velocidade linear. A velocidade dada em unidades do Blender por segundo. Pylist [x,y,z] getVelocity ( ); Retorna a lista com as components X, Y e Z da velocidade. A velocidade dada em unidades do Blender por segundo. Float mass getMass ( ); Retorna a massa do gameObject. Pylist [x,y,z] getReactionForce ( ); Retorna uma lista python de trs elementos. suspendDynamics ( ); Suspende os calculos dinmicos da gameEngine. restoreDynamics ( ); Suspende os calculos dinmicos da gameEngine.