tutorial 3d

Upload: marvin

Post on 06-Mar-2016

239 views

Category:

Documents


0 download

DESCRIPTION

Como criar Jogos em 3D

TRANSCRIPT

  • 7/21/2019 Tutorial 3d

    1/98

    TUTORIAL 01 CRIANDO UM PROJETO

    Para criar um novo projeto v at o menu Arquivo -> Novo Projeto. A seguinte tela ser exibida:

    Primeiramente selecione o tipo do projeto a ser criado, para este primeiro tutorial selecione !tatic "amera

    #ame$, este tipo projeto possui uma c%mera principal que acompan&a o jogador de maneira esttica. 'm

    seguida digite o nome do projeto, algo como #ame$ e selecione um diret(rio para o projeto, importante criar

    uma nova pasta para salvar o projeto, pois ele cria vrios arquivos no local o que pode causar problemas caso

    j existam outros arquivos no mesmo diret(rio. )ambm in*orme o nome do autor do projeto. 'm seguida

    selecione o *ormato do ator principal, este *ormato re*ere se ao tipo de modelo + a ser utiliado pelo ator

    principal, que pode ser /, + ou !, o *ormato / *oi utiliado inicialmente no jogo 0ua1e /$, possui

    in*orma23es sobre o modelo e tambm as suas anima23es baseadas em *rames, o *ormato + a evolu24odo / e *oi utiliado inicialmente no jogo 0ua1e +$, possui uma qualidade maior que o / e possibil ita a

    divis4o do ator em + partes distintas. A outra op24o de *ormato o *ormato !, este *ormato *oi utiliado

    inicialmente no jogo 5al* 6i*e$, di*erente dos modelos / e + que possuem a anima24o baseada em

    *rames, no *ormato ! os modelos possuem a anima24o baseada em esqueletos. Para o nosso primeiro

    tutorial selecione o *ormato /. Para *inaliar pressione 78$.

    7 projeto ser criado e em seguida ser criado automaticamente o primeiro mapa do jogo, digite o nome do

    mapa, algo como apa9$ e pressione 78.

    'sta criado o seu projeto, agora poss;vel visualiar a tela principal do + #ame

  • 7/21/2019 Tutorial 3d

    2/98

    A tela principal dividida em tr=s partes, o editor de mapas, a paleta de objetos e as propriedades doobjeto. Na paleta de objetos est4o todas as entidades que podem ser criadas no mapa, acima dela poss;vel

    selecionar a categoria de objetos a ser listada, e com um duplo clique sobre o objeto desejado este

    automaticamente adicionado ao mapa e *ica vis;vel no editor de mapas, onde poss;vel interagir com este

    objeto utiliando o mouse. ' abaixo da paleta de objetos est4o as propriedades do objeto que estiver atualmente

    selecionado no editor de mapas.

    TUTORIAL 02 CRIANDO UM OBJETO

    Partindo do principio de que voc= esta acompan&ando os tutoriais a partir do inicio, voc= j deve saber como

    criar um projeto, ent4o inicie um novo projeto ou utilie o mesmo que *oi criado no )utorial 9.

    Agora que voc= j esta com o projeto e o primeiro mapa criado vamos adicionar um objeto a este mapa. Na

    sele24o de categorias na paleta de objetos selecione a categoria

  • 7/21/2019 Tutorial 3d

    3/98

    Propriedades do Objeto

    - Na!e?e*ere se ao nome do objeto, este nome gerado automaticamente na sua cria24o e pode ser

    alterado para *acilitar a sua localia24o e utilia24o *utura.

    - C"ippi#$'sta op24o &abilita ou desabilita o clippingdo objeto, o clippingconsiste em exibir para o usurio

    apenas os objetos que realmente estejam vis;veis a ele, caso o objeto esteja a uma grande distancia do jogador

    ele ser destru;do e caso o jogador se aproxime novamente do objeto ele ser recriado, isto aumenta

    consideravelmente o desempen&o do jogo e a esta distancia em que os objetos s4o destru;dos pode ser

    alterada nas propriedades do projeto. as em alguns objetos o clippingpode n4o ser @til, como em objetos

    muito grandes, por isso permitido que ele seja desabilitado nos objetos.

    - Co""isio# "ategoria com as de*ini23es de colis4o do objeto.

    -- Bo%#&e e*ine o *ator de salto do objeto.

    -- 'ri&tio# e*ine o *ator de *ric24o do objeto com os outros objetos colididos.

    -- (&a"e e*ini24o do taman&o *;sico da colis4o em rela24o com o taman&o do objeto, e re*erente as

    coordenadas , B e C.

    -- (o"idAtiva ou desativa a colis4o do objeto.

    -- (t)"ee*ine tipo de *;sica aplicada ao objeto, caso seja Bounceo objeto ira saltar no ambiente, como

    por exemplo, uma bola sendo jogada, a *or2a destes saltos re*erente ao *ator Bouncede*inido anteriormente.

    "aso o tipo de *;sica seja de*inido como !lide o objeto vai desliar pelo ambiente.

    -- T)pee*ine o tipo de colis4o, caso seja Statico objeto n4o ter nen&uma rea24o a colis3es quepossam ocorrer no ambiente, caso seja namic ao ocorrer uma colis4o a *;sica de*inida em Style aplicada ao

  • 7/21/2019 Tutorial 3d

    4/98

    objeto.

    -- Co""isio# "ategoria com as de*ini23es de colis4o do objeto.

    - Materia"?e*ere se ao material aplicado ao objeto, este material pode conter cores ou texturas.

    - Pit&*A#$"e e*ine o %ngulo de rota24o no eixo B do objeto.

    - Positio# D a posi24o do objeto no mapa e re*erente as coordenadas , B e C.

    - Ro""A#$"e e*ine o %ngulo de rota24o no eixo C do objeto. - (&a"e e*ine o taman&o *;sico do objeto e re*erente as coordenadas , B e C.

    - T%r#A#$"e e*ine o %ngulo de rota24o no eixo do objeto.

    - +isib"e e*ine se o objeto vis;vel ou n4o, aten24o ao alterar esta propriedade para *alse o objeto n4o

    *icara mais vis;vel no editor de mapas, s( ser poss;vel acess-lo atravs da lista de objetos do mapa.

    Para entender mel&or altere algumas propriedade do objeto como o !cale, ?ollAngle, Pitc&Angle,

    )urnAngle, Position e veja o comportamento do cubo no seu editor de mapa, por enquanto n4o se preocupe

    com o "ollision e nem com o material, pois aprenderemos mais sobre eles nos pr(ximos tutoriais.

    )ambm poss;vel, e mais *cil, interagir com os objetos utiliando o pr(prio mouse no editor de mapas.

    'xistem dois modos de interagir com os objetos do mapa atravs do mouse, o primeiro deles utiliando o

    gimo, o gimo s4o as setas coloridas para os eixos , B e C que aparecem nos objetos selecionados, este o

    modo padr4o do + #ame

  • 7/21/2019 Tutorial 3d

    5/98

    Acessando o menu E7p23es > #imoE poss;vel alterar diversas propriedade do gimo, como por exemplo,

    a propriedade E6ineIidt&E que altera a largura das setas. )ambm poss;vel desabilitar o gimo, desmarcando

    a propriedade E7p23es -> #imo -> 'nabledE, sem o gimo a movimenta24o dos objetos ser *eita somente

    atravs do mouse, sem as setas para os eixo e n4o ser poss;vel alterar o taman&o dos objetos com o mouse. A

    movimenta24o sem o #imo era utiliada nas primeiras vers3es do + #ame

  • 7/21/2019 Tutorial 3d

    6/98

    que existe na outras categorias. "aso queira deletar um objeto do mapa, clique nele com o bot4o direito do

    mouse e escol&a a op24o deletar, ou simplesmente selecione o objeto que voc= deseja deletar e pressione a

    tecla elete.

    Moc= deve estar ac&ando os objetos criados meio *eios$, por possu;rem apenas uma cor preta, isto ocorre

    porque ainda n4o adicionamos uma *onte de lu ao nosso mapa, no pr(ximo tutorial aprenderemos a iluminar o

    nosso ambiente.

    TUTORIAL 0, CRIANDO UMA 'ONTE DE LU-

    "omo voc= deve ter percebido os objetos criados at agora s4o pouco realistas, isto ocorre porque n4o

    possu;mos em nosso ambiente uma *onte emissora de lu. Neste tutorial aprenderemos como adicionar uma lu

    ao nosso mapa e como criar uma *onte de lu personaliada.

    Partindo do principio de que voc= esta acompan&ando os tutoriais a partir do inicio, voc= j deve saber como

    criar um projeto, ent4o inicie um novo projeto ou utilie o mesmo que *oi criado no )utorial 9 ou 9/.

    Primeiramente vamos utiliar a *onte de lu padr4o do + #ame

  • 7/21/2019 Tutorial 3d

    7/98

    "om a nossa *onte de lu no mapa j poss;vel notar que os objetos ir4o gan&ar uma *orma mais realista,

    movimente a lu ao redor do objeto para notar como ele se comporta em rela24o lu, dependendo da posi24o

    da lu algumas *aces do objeto podem *icar mais claras e outras mais escuras.

    Agora vamos aprender a criar uma *onte de lu personaliada, para isto acesse o menu

    6ues. Moc= visualiara a seguinte inter*ace:

  • 7/21/2019 Tutorial 3d

    8/98

    'ste o cadastro de novas *ontes emissoras de lu, nele poss;vel criar e editar as lues do projeto. Mamos

    criar uma nova lu para o nosso projeto, para isto clique no bot4o Novo$, aparecera um dialogo pedindo para

    in*ormar o nome da nova *onte de lu, para o nosso exemplo vamos c&am-la de Nova6u$, agora precisode*inir as propriedades desta lu, ent4o vamos aprender o que signi*ica cada uma destas propriedades.

    A atenua24o da lu determina o quanto rpido ser a diminui24o da intensidade da lu em rela24o a

    distancia dos objetos. 'm uma *onte emissora de lu poss;vel de*inir tr=s tipos de atenua24o. 7 primeiro deles

    o 0uadratic Attentuation$ FAtenua24o 0uadrticaG onde a intensidade da lu diminui proporcionalmente ao

    quadrado da distancia. 7 segundo o 6inear Attentuation$ FAtenua24o 6inearG onde a intensidade da lu

    diminui proporcionalmente a distancia e a "onstant Attentuation$ F"onstante de Atenua24oG. ' o terceiro tipo

    uma uni4o dos dois itens anteriores permitindo uma atenua24o quadrtica juntamente com a linear.

    - Li#earAtte#t%atio# Malor que determina o quanto rpida ser a diminui24o da intensidade da lu

    proporcionalmente a distancia. - .%adrati&Atte#t%atio#Malor que determina o quanto rpida ser a diminui24o da intensidade da lu

    proporcionalmente ao quadrado da distancia.

    - Co#stAtte#%atio# 'm e*eito diminui o bril&o da lu em uma quantidade relativa.

    - Li$*t(t)"e e*ine o tipo de lu a ser emitida, este tipo pode ser !pot 6ig&t$, 7mni 6ig&t$ ou Parallel

    6ig&t$. 7 tipo !pot 6ig&t uma lu que ilumina em certa dire24o como uma toc&a, caso o !potcuto**$ possua o

    valor de O9 graus ent4o a lu iluminara em todas a dire23es. 7 segundo tipo de lu o 7mni$, uma *onte de

    lu deste tipo como uma representa24o do sol, ilumina o ambiente n4o importando o quanto distante os

    objetos est4o da *onte emissora. 7 outro tipo de lu o Parallel$, neste tipo de lu os objetos s4o auto

    iluminados.

    - (*i#i#$Ativa ou desativa a lu emitida.

    - (potC%tO// 'speci*ica o %ngulo de expans4o da lu. 7 %ngulo deve estar entre 9 e 9 graus para a lu do

    tipo !pot 6ig&t$ *uncionar, ou ent4o com um valor de O9 graus para que a lu ten&a um distribui24o uni*orme

    em uma certa dire24o.

  • 7/21/2019 Tutorial 3d

    9/98

    - (potEpo#e#t D usado para especi*icar o quanto *ocaliada a lu ser. !omente s4o aceitos valores

    entre 9 e /O.

    - (potDire&tio# !4o as coordenadas , B e C que de*inem a dire24o apontada por uma lu do tipo !pot$.

    !e o !potcuto**$ possuir um %ngulo de O9 graus o !potirection$ n4o ter e*eito.

    - A!bie#t Co"or ?epresenta a cor de *undo da lu, de*inida usando o padr4o ?#< e valor alp&a da cor.

    - Di//%se Co"or etermina a cor da *onte de lu, de*inida usando o padr4o ?#< e valor alp&a da cor. - (pe&%"ar Co"or etermina a cor da *onte de lu, de*inida usando o padr4o ?#< e valor alp&a da cor.

    Para o nosso tutorial vamos criar uma lu vermel&a para podemos ver como um objeto pode estar sendo

    iluminado por di*erentes *ontes de lu. 'nt4o para a Nova6u$ de*ina as seguintes propriedades:

    Co#stAtte#%atio# A!bie#t Co"orMermel&o "laro

    Li#earAtte#t%atio# 9 (pe&%"ar Co"orMermel&o

    .%adrati&Atte#t%atio# 9 Di//%se Co"orMermel&o

    Li$*t(t)"e !pot (potDire&tio# F9, 9, 9G

    (*i#i#$)rue

    (potC%tO// O9

    Agora salve a nova 6u clicando no bot4o !alvar$ e esta pronta a nossa lu vermel&a. Kec&e a janela de

    edi24o de lues e adicione a nossa Nova6u$ ao mapa, para isto basta selecionar a categoria 6ues na paleta

    de objetos e dar um duplo clique sobre a Nova6u$. Posicione a lu do outro lado do objeto em rela24o a

    ain6ig&t$ que j estava no mapa.

    D poss;vel notar que a *ace do cubo que esta do lodo da Nova6u$ *icou completamente vermel&a e a *ace

    que esta do lado da ain6ig&t$ *icou branca, mas com um leve tom de vermel&o isso porque a Nova6u$ ainda

    esta atingindo em parte esta *ace.

  • 7/21/2019 Tutorial 3d

    10/98

    'ste apenas o mais bsico exemplo do que poss;vel *aer com as *ontes emissoras de lu, em um mapa

    poss;vel adicionar at O *ontes de lu, mas n4o aconsel&vel utiliar muitas lues em um cenrio, mel&or

    primeiro entender todas as propriedade de uma lu e criar a *onte de lu adequada ao mapa que esta sendo

    desenvolvido, por exemplo em mapa de um ambiente externo o ideal utiliar uma *onte de lu @nica

    representando o sol, j em um ambiente interno seria adequado usar uma ou mais lues menos intensas e

    localiadas em pontos estratgicos do ambiente para criar um cenrio mais realista.

    No pr(ximo tutorial aprenderemos como criar uma textura e aplic-la em um objeto, assim ser poss;vel

    come2ar a criar os primeiro cenrios mais realistas.

    TUTORIAL 0 CRIANDO UM MATERIAL

    Neste tutorial aprenderemos a criar um aterial, este material uma espcie de pel;cula que *icara

    recobrindo toda a super*;cie de determinado objeto. Hm material composto basicamente de cores e uma

    imagem c&amada de textura.

    Para come2armos primeiramente crie um novo projeto, ou ent4o utilie o criado nos tutoriais anteriores.

    Partindo de um mapa se nen&um objeto coloque um cubo neste mapa, ser nele que aplicaremos o nosso

    material.

    Agora v at o menu

  • 7/21/2019 Tutorial 3d

    11/98

    - Disab"ed 5abilita ou desabilita a textura do material.

    - Co!pressio#'speci*ica como a textura ser compactada em mem(ria. Pode ser usado para conseguir

    uma grande compacta24o e assim reduir o uso de mem(ria da placa de v;deo, mas pode resultar em uma

    diminui24o da velocidade. 'm algumas placas de v;deos esta propriedade pode n4o ter e*eito. 7 "ompression$

    pode ser de R tipo, o primeiro deles o e*ault$, com ele a textura compactada da maneira padr4o de*inida

    na placa de v;deo. 7 segundo tipo o None$, com ele n4o *eito nen&um tipo compacta24o da textura. 7terceiro o !tandart$ que utilia uma taxa de compacta24o media com velocidade media. 7 quarto tipo o

    5ig&0ualit, que utilia uma grande taxa de compacta24o mas possui uma baixa velocidade. ' o ultimo tipo o

    5ig&!peed, que possui uma grande velocidade de compacta24o, mas com uma baixa taxa de compacta24o.

    - 'i"teri#$.%a"it) etermina a qualidade do *iltro da textura. 7 *iltro da textura determina como ela

    exibida quando ela aumentada ou diminu;da de taman&o. 'xistem duas op23es de *iltro, o Jsotropic$ e o

    Anisotropic$. No Jsotropic$ a quantia de *iltro ao longo do eixo x e da textura o mesmo, e o mximo do

    *iltro aplicado individualmente ao longo de cada dos dois eixo, isto pode escurecer a textura quando ela vista a

    em um %ngulo di*erente de uma reta. 7 *iltro Anisotropic$ *iltra a textura tridimensionalmente. 'm ve de apenas

    calcular a cor do pixel central e esse pixes ao redor deles mesmos, *ormando uma es*era, o *iltro Anisotropic$

    calcula a cor central do pixel e dos que est4o ao seu redor, mas *ormando a *igura original, o que ideal para a

    maioria dos pol;gonos.

    - I!a$eA"p*a e*ine o tipo de transpar=ncia da textura, este tipo pode ser e*ault$,

    !uper

  • 7/21/2019 Tutorial 3d

    12/98

    utilia O bits apenas para valores de luminosidade.

    - Tet%reMode 'speci*ica como a textura aplicada ao objeto, este modo pode ser ecal, odulate,

  • 7/21/2019 Tutorial 3d

    13/98

    Agora vamos voltar para o nosso cadastro de materiais para alterarmos o nosso material e inserirmos uma

    textura nele, ent4o v at o menu

  • 7/21/2019 Tutorial 3d

    14/98

    'st pronto o nosso material com uma textura, este um exemplo mais bsico poss;vel do que pode ser

    *eito com o material, como voc= percebeu um material possui diversas propriedades di*erentes e a combina24o

    destas s4o utiliadas para gerar certos e*eitos, nos tutoriais *uturos ser demonstrado algumas destas

    combina23es como por exemplo como deixar uma textura transparente, mel&orar a qualidade, criar texturas

    animadas, etc.

    "omo voc= deve ter percebido, at agora estvamos apenas criando objetos no ambiente, mas ainda n4o

    vimos como eles aparecem ao executarmos nossa aplica24o, ent4o no pr(ximo tutorial criaremos o nosso

    primeiro pequeno cenrio e *inalmente executaremos o nosso jogo.

    TUTORIAL 05 CRIANDO UM CEN6RIO

    Neste tutorial aprenderemos a criar um pequeno cenrio e executarmos a nossa aplica24o. Primeiramente

    crie um novo projeto do tipo !tatic "amera #ame$, ou ent4o utilie o criado nos tutoriais anteriores.

    Partindo de um mapa vaio adicione a ele um cubo, utiliaremos ele como o c&4o do nosso cenrio, para

    isto altere a sua propriedade !cale$ para X /9 B X 9, e C X /9 e o Position$ para X 9 B X 9 e C X 9 para

    posicion-lo no centro do nosso cenrio. Agora adicione tambm uma *onte lu ao cenrio, podemos usar lu

    padr4o ain6ig&t$, mas se pre*erir pode criar a sua pr(pria lu. Posicione a lu acima do cubo criado, at que

    este esteja adequadamente iluminado. !e voc= *e tudo corretamente o cenrio estar parecido com este:

  • 7/21/2019 Tutorial 3d

    15/98

    Agora vamos cadastrar um material para colocarmos no cubo que representa o nosso c&4o. Para isto v at

    o menu ateriais$ e crie um novo material com o nome de #rama$ como mostrado no

    tutorial anterior. Altere a propriedade )exture!cale$ para X R B X R e C X R pois como a textura que

    utiliaremos pequena e o objeto onde a aplicaremos maior devemos alterar o taman&o de escala da textura,

    assim temos uma mel&or qualidade na textura. anten&a as outras propriedades padr4o, mas lembre-se de

    de*inir a propriedade isabled$ para *alse assim a textura estar &abilitada para o material. !elecione a

    seguinte textura para este material:

    !alve o aterial e retorne para editor de mapas e no cubo que representa o c&4o na propriedade aterial$

    selecione o material que voc= acabou de criar #rama$ ou outro nome que voc= ten&a dado, o material

    aparecer no c&4o criado.

  • 7/21/2019 Tutorial 3d

    16/98

    Ainda adicione um objeto do tipo )oro$ que est na paleta ?un$ ou simplesmente pressione K.

  • 7/21/2019 Tutorial 3d

    17/98

    Moc= poder andar com o personagem pelo cenrio, as teclas padr4o de movimenta24o s4o as setas

    direcionais, enter para executar a23es e espa2o para pular, estas teclas podem ser alteradas na con*igura24o do

    ator principal, no pr(ximo tutorial aprenderemos exatamente como *aer estas altera23es nas propriedades do

    ator principal.

    Note que se voc= movimentar o ator principal para *ora da rea do cubo que serve como c&4o ele cair

    in*initamente, isto ocorre porque o + #ame

  • 7/21/2019 Tutorial 3d

    18/98

    'ste o editor do ator principal, nele de*inido o modelo a ser utiliado como ator, selecionadas as

    anima23es a serem utiliadas no jogo, como por exemplo, a de andar, tambm de*inido a velocidade de cada

    anima24o e a *or2a aplicada sobre o objeto em determinadas a23es como, por exemplo, correr. A seguir ser4o

    explicadas mais detal&adamente todas as propriedades que s4o poss;veis de*inir no ator principal.

    - Mode"o?e*ere se ao modelo + que ser utiliado na representa24o *;sica do ator principal, como *oide*inido que o projeto utilia um ator principal do tipo / o arquivo do modelo + deve estar no *ormato /,

    caso o projeto esteja de*inido como ator do tipo + a edi24o do ator principal *eita de outra maneira como

    ser mostrado no pr(ximo tutorial. 7 *ormato / *oi utiliado inicialmente no jogo 0ua1e /$, possui

    in*orma23es sobre o modelo e tambm as suas anima23es baseadas em *rames, existem diversas *erramentas

    que podem ser utiliadas para a modelagem deste tipo de modelo, entre eles o

  • 7/21/2019 Tutorial 3d

    19/98

    - (ta#d e*ine a velocidade da anima24o utiliada pelo ator no momento em que nen&uma outra anima24o

    estiver sendo executada, ou em outras palavras quando ele estiver parado.

    - J%!pe*ine a velocidade da anima24o utiliada pelo ator no momento que ele pular.

    - 'or&e e*ini24o a *or2a aplicada sobre o objeto em determinadas situa23es. 7 valor da *or2a varia

    con*orme o taman&o do objeto, objeto maiores necessitam de mais *or2a para serem movimentados.

    - 3a"4 e*ine a *or2a aplicada sobre o ator para que ele ande.- R%# e*ine a *or2a aplicada sobre o ator para que ele corra.

    - J%!pe*ine a *or2a aplicada sobre o ator para que ele pule.

    - J%!p ;e*ine a altura do pulo do ator.

    - J%!p (e*ine o intervalo de tempo do pulo.

    - T%r#e*ine a *or2a aplicada sobre o ator para que ele vire-se.

    - Positio#D a posi24o interna do ator e re*erente s coordenadas , B e C. 'sta posi24o utiliada para

    corrigir a posi24o do modelo no seu pr(prio eixo caso ele n4o esteja centraliado nas coordenadas 9, 9, 9.

    - (&a"ee*ine o taman&o visual do objeto e re*erente s coordenadas , B e C.

    - Co""isio# (&a"ee*ine o taman&o *;sico do objeto e re*erente s coordenadas , B e C. 7 "ollision

    !cale usado para determinar a colis4o do ator com os objetos do ambiente.

    - Rotatio# e*ini24o da rota24o do objeto.

    - Pit&*A#$"e e*ine o %ngulo de rota24o no eixo B do ator.

    - Ro""A#$"e e*ine o %ngulo de rota24o no eixo C do ator.

    - T%r#A#$"e e*ine o %ngulo de rota24o no eixo do ator.

    Mamos alterar o modelo que estamos utiliando como personagem, para isso *a2a o doVnload do modelo do

    seguinte endere2o:

    &ttp:WWVVV.eternix.com.brWptW+dgamebuilderWmd/ai.ip

    escompacte o arquivo, dentro dele voc= encontrar dois arquivos, o ai.md/$ que o arquivo com omodelo e todas as suas anima23es e o ai.jpg$ que a imagem para ser utiliada como textura. 0uando o +

    #ame / MieVer no pr(prio +

    #ame

  • 7/21/2019 Tutorial 3d

    20/98

    Agora que j vimos como o modelo , vamos import-lo para dentro do nosso jogo, *ec&e o / MieVer, ele

    serve somente para visualiar os modelos /. Molte para o + #ame Ator Principal e clique em Abrir$ e selecione

    o arquivo do modelo ai.md/$ em seguida selecione o material aterialAtor$ que acabamos de criar, voc= ver

    que j podemos visualiar o modelo na visualia24o. Agora necessrio de*inir as anima23es utiliadas pelo

    modelo em determinadas a23es, para isso em e*ault Animations$ escol&a a anima24o run$ para a

    propriedade Ial1 e ?un, selecione a anima24o stand$ para a propriedade !tand e jump$ para Uump. Note que

    selecionamos a anima24o run$ para a propriedade Ial1 que representa o anda e para o ?un que representa o

    correr, porem percebe que em Animations !peed$ as duas propriedades tem velocidades di*erentes, assim

    temos a di*erencia24o do personagem andando e correndo.

  • 7/21/2019 Tutorial 3d

    21/98

    'sta pronto o novo ator, agora salve, e retorne para a tela principal do + #ame ?un$ ou simplesmente pressione K. Moc= ver que o

    novo ator estar no jogo e poder andar com ele pelo ambiente que voc= criou e ele estar com todas asanima23es que *oram de*inidas.

  • 7/21/2019 Tutorial 3d

    22/98

    No pr(ximo tutorial aprenderemos como editar o ator principal no *ormato +, o tipo de ator ser utiliado

    de*inido no projeto e existem algumas di*eren2as entre eles, no *ormato / o ator mais simples de ser

    con*igurado, j no + existem mais op23es a serem de*inidas, o *ormato + tambm possui uma qualidade

    superior a do /.

    TUTORIAL 07 - EDITANDO O ATOR PRINCIPAL (MD3)

    No tutorial anterior criamos um novo ator principal no formato MD2, agora faremos o mesmo, porm para oformato MD3, que consiste na evoluo do MD2 e foi utilizado inicialmente no jogo ua!e 3", possui uma qualidademaior que o MD2 e possi#ilita a diviso do ator em 3 partes distintas$ %rimeiramente crie um novo projeto, desta vezvamos usar um projeto do tipo D&namic 'amera (ame", este tipo de projeto parecido com o )tatic 'amera (ame"porem a c*mera acompan+a o ator principal de maneira din*mica, como se ela flutuase ao redor do ator principal$ -tam#m selecione MD3 para o formato do ator principal$

    -m seguida com o projeto j. criado v. at o menu %rojeto / 0tor %rincipal$ 0 seguinte tela ser. e1i#ida

  • 7/21/2019 Tutorial 3d

    23/98

    -ste o editor do ator principal, note que agora e1istem outras opes para serem definidas alem das que j. eramutilizadas no formato MD2$ 0 seguir sero e1plicadas mais detal+adamente todas as propriedades que so poss4veisdefinir$

    Model Directory:5efere se ao diret6rio onde est. o modelo 3D que ser. utilizado na representao f4sica do atorprincipal, no formato MD2 definido apenas com um arquivo do modelo 3D, porem no formato MD3 e1istem v.riosarquivos que compem o modelo, assim sendo necess.rio informar o diret6rio onde estes arquivos encontramse paraque estes sejam importados para dentro do projeto, importante verificar se dentro do mesmo diret6rio no e1istam

    outros arquivos pois todos os arquivos sero copiados para o projeto, ento antes de importar o modelo separe osarquivos que fazer parte dele em um diret6rio separado dos demais$ 0ssim como o formato MD2 o MD3 tam#mpossui diversas ferramentas que podem ser utilizadas para a modelagem deste tipo de modelo, entre eles o 7lender que 8pen )ource e o Mil!)+ape 3D que comercial$ Leg A!i"#tio!: Definio das animaes que sero utilizadas pela parte inferior do ator em reao adeterminadas aes$ -stas animaes so carregadas diretamente do arquivo do modelo 3D, e deve ser editadas nopr6prio programa de modelagem 3D$ $#l%: Define a animao utilizada pelas pernas do ator no momento que ele estiver andando pelo am#iente$

    R&!: Define a animao utilizada pelas pernas do ator no momento que ele estiver correndo pelo am#iente$ 't#!d: Define a animao utilizada pelas pernas do ator no momento em que nen+uma outra animao estiver

    sendo e1ecutada, ou em outras palavras quando ele estiver parado$ &":Define a animao utilizada pelas pernas do ator no momento que ele pular$ T&r!:Define a animao utilizada pelas pernas do ator no momento que ele estiver virandose$

    Toro A!i"#tio!: Definio das animaes que sero utilizadas pela parte superior do ator em reao adeterminadas aes$ -stas animaes so carregadas diretamente do arquivo do modelo 3D, e deve ser editadas nopr6prio programa de modelagem 3D$ $#l%: Define a animao utilizada pelo torso do ator no momento que ele estiver andando pelo am#iente$

    R&!: Define a animao utilizada pelo torso do ator no momento que ele estiver correndo pelo am#iente$ 't#!d: Define a animao utilizada pelo torso do ator no momento em que nen+uma outra animao estiver sendo

    e1ecutada, ou em outras palavras quando ele estiver parado$ &":Define a animao utilizada pelo torso do ator no momento que ele pular$ T&r!:Define a animao utilizada pelas pernas do ator no momento que ele estiver virandose$

    Leg A!i"#tio! 'eed: Definio a velocidade das animaes utilizadas pela parte inferior do ator #aseado nointervalo de repetio de cada frame, quanto maior o valor maior o intervalo entre os frames em conseq9:ncia maislenta a animao$ $#l%: Define a velocidade da animao utilizada pelas pernas do ator no momento que ele estiver andando peloam#iente$

    R&!: Define a velocidade da animao utilizada pelas pernas do ator no momento que ele estiver correndo peloam#iente$

    't#!d: Define a velocidade da animao utilizada pelas pernas do ator no momento em que nen+uma outraanimao estiver sendo e1ecutada, ou em outras palavras quando ele estiver parado$

    &":Define a velocidade da animao utilizada pelas pernas do ator no momento que ele pular$ T&r!:Define a velocidade da animao utilizada pelas pernas do ator no momento que ele estiver virandose$ Toro A!i"#tio! 'eed: Definio a velocidade das animaes utilizadas pela parte superior do ator #aseado no

  • 7/21/2019 Tutorial 3d

    24/98

    intervalo de repetio de cada frame, quanto maior o valor maior o intervalo entre os frames em conseq9:ncia maislenta a animao$ $#l%: Define a velocidade da animao utilizada pelo torso do ator no momento que ele estiver andando peloam#iente$

    R&!: Define a velocidade da animao utilizada pelo torso do ator no momento que ele estiver correndo peloam#iente$

    't#!d: Define a velocidade da animao utilizada pelo torso do ator no momento em que nen+uma outra

    animao estiver sendo e1ecutada, ou em outras palavras quando ele estiver parado$ &":Define a velocidade da animao utilizada pelo torso do ator no momento que ele pular$ T&r!:Define a velocidade da animao utilizada pelo torso do ator no momento que ele estiver virandose$ *orce: Definio a fora aplicada so#re o o#jeto em determinadas situaes$ 8 valor da fora varia conforme o

    taman+o do o#jeto, o#jeto maiores necessitam de mais fora para serem movimentados$ $#l%: Define a fora aplicada so#re o ator para que ele ande$

    R&!: Define a fora aplicada so#re o ator para que ele corra$ &":Define a fora aplicada so#re o ator para que ele pule$ &" +:Define a altura do pulo do ator$ &" ':Define o intervalo de tempo do pulo$ T&r!:Define a fora aplicada so#re o ator para que ele virese$ Poitio!:; a posio interna do ator e referente e ?$ -sta posio utilizada para corrigir a

    posio do modelo no seu pr6prio ei1o caso ele no esteja centralizado nas coordenadas @, @, @$ 'c#le:Define o taman+o visual do o#jeto e referente e ?$ Colliio! 'c#le:Define o taman+o f4sico do o#jeto e referente e ?$ 8 'ollision )cale usado para determinar a coliso do ator com os o#jetos do am#iente$ Rot#tio!: Definio da rotao do o#jeto$ Pitc,A!gle: Define o *ngulo de rotao no ei1o > do ator$

    RollA!gle: Define o *ngulo de rotao no ei1o ? do ator$ T&r!A!gle: Define o *ngulo de rotao no ei1o = do ator$

    Aamos alterar o modelo que estamos utilizando como personagem, para isso faa o doBnload do modelo doseguinte endereo

    +ttpCCBBB$eterni1$com$#rCptC3dgame#uilderCmd3laracroft$rar

    Descompacte o arquivo, dentro dele voc: encontrar. v.rios arquivos que compem o modelo e suas te1turas$ 0ntesde import.lo para dentro do nosso jogo vamos visualiz.lo, para isso, dentro do 3D (ame 7uilder v. at o menuerramentas / MD3 AieBer$ Dentro do visualizador de modelos MD3 v. at o menu 0rquivo / 0#rir e selecione apasta onde o modelo foi descompactado, agora voc: poder. visualizar o modelo j. com todas as suas te1turas e todas assuas animaes$

    http://www.eternix.com.br/pt/3dgamebuilder/md3laracroft.rarhttp://www.eternix.com.br/pt/3dgamebuilder/md3laracroft.rar
  • 7/21/2019 Tutorial 3d

    25/98

    Aoc: poder. notar que a qualidade do modelo MD3 muito superior ao MD2$ agora que j. vimos como o modelo ,vamos import.lo para dentro do nosso jogo, fec+e o MD3 AieBer, ele serve somente para visualizar os modelos MD3 eas suas animaes$ Aolte para o 3D (ame 7uilder e v. novamente a edio de ator principal, %rojeto / 0tor %rincipal$

    Na edio de ator principal clique em 0#rir" e selecione o diret6rio onde o modelo MD3 se encontra$ Normalmentecom as opes padro o seu ator principal j. estar. pronto para ser usado, mas dependendo do cen.rio que voc: criouele pode esta desproporcional ao taman+o dos o#jetos, caso isso ocorra voc: diminuir o seu taman+o alterando apropriedade )cale", no meu caso eu dei1e o ator com um )cale" =, > e ? igual a @,@22 e um 'ollision )cale" de @,Eem = e ? e de @,F em >, assim o ator ficou proporcional ao cen.rio$ )e voc: desejar tam#m pode alterar outraspropriedades para dei1ar o ator da maneira que voc: preferir$

  • 7/21/2019 Tutorial 3d

    26/98

    -sta pronto o novo ator, agora salve, e retorne para a tela principal do 3D (ame 7uilder$ %ara visualizarmos o atorem ao crie um pequeno cen.rio como mostrado nos tutoriais anteriores com uma #ase s6lida no centro dele parapodermos andar com o nosso ator por ele$

    0p6s concluir o cen.rio e1ecute o projeto, %rojeto / 5un" ou simplesmente pressione G$ Aoc: ver. que o novoator estar. no jogo e poder. andar com ele pelo am#iente que voc: criou$

    Note que agora a c*mera esta se movendo de maneira diferente das criadas nos projetos anteriores, isto porque

  • 7/21/2019 Tutorial 3d

    27/98

    definimos no inicio que este projeto seria do tipo D&namic 'amera (ame", assim c*mera se move dinamicamente aoredor do ator principal$

    No pr61imo tutorial aprenderemos como importar o#jetos criados em programas de modelagem para o 3D (ame7uilder$

    TUTORIAL 0< 8 IMPORTANDO UM OBJETO

    Neste tutorial aprenderemos a importar objetos + modelados em outras *erramentas de modelagem +.

    Primeiramente inicie um novo projeto ou utilie algum criado anteriormente.

    'm seguida com o projeto j criado v at o menu 7bjetos. A seguinte tela ser

    exibida:

    'ste o cadastro de objetos, nele s4o importados os modelos + e de*inidas algumas de suas

    propriedades. A seguir ser4o explicadas mais detal&adamente todas as propriedades que s4o poss;veis de*inir

    em um objeto.

    - Mode"o?e*ere se ao modelo + que ser utiliado na representa24o *;sica do objeto, este modelo podeestar em vrios *ormatos aceitos pelo + #ame

  • 7/21/2019 Tutorial 3d

    28/98

    - ,D( + !tudio Kile.

    - B(P 0ua1e +

    - L2 #&oul / Kile.

    - T( #NH )riangulated !ur*ace Kile.

    - L3O 6ig&tVave Kile.

    - MD2 0ua1e / odel Kile. - MD, 0ua1e + odel Kile.

    - MD5 oom + odel Kile.

    - MDC ?eturn )o "astle Iol*enstein Kile.

    - M(,D il1s&ape + Kile.

    - NM' Normal apper Kile.

    - NURB( Nurbs Kile.

    - OBJ Iave*ront Kile.

    - OCT K!?ad Kile.

    - PL= !tandard )riangle Kormat Kile.

    - (MD 5al* 6i*e Kile.

    - (TL !tl Kile.

    - TIN )riangular Jrregular NetVor1 Kile.

    - +RML Mirtual ?ealit odel Kile.

    - Materia"e*ine o material que ser aplicado sobre o objeto, alguns modelos + possuem o material

    de*inido no pr(prio modelo e necessitam que outro material seja aplicado sobre eles, mas caso o modelo n4o

    possua material externo ele pode ser aplicado manualmente por esta propriedade. As imagens que comp3em as

    texturas de objetos que possuam texturas de*inidas no pr(prio modelo devem ser colocadas manualmente na

    pastas )extures$ do projeto.

    - (&a"ee*ine o taman&o visual do objeto e re*erente s coordenadas , B e C.

    - Rotatio# e*ini24o da rota24o do objeto.

    - Pit&*A#$"e e*ine o %ngulo de rota24o no eixo B do ator.

    - Ro""A#$"e e*ine o %ngulo de rota24o no eixo C do ator.

    - T%r#A#$"e e*ine o %ngulo de rota24o no eixo do ator.

    Mamos criar um novo objeto, para isto *a2o o donVload do seguinte arquivo:

    &ttp:WWVVV.eternix.com.brWptW+dgamebuilderWcasaY+ds.rar

    escompacte o arquivo, dentro dele voc= encontrar + arquivos, o dom.+ds$ que o arquivo do modelo +

    e mais duas imagens utiliadas como textura pelo modelo. Antes de importarmos o modelo vamos visuali-lo,

    para isso volte ao + #ame odel MieVer. Agora dentro do odel

    MieVer abra o arquivo dom.+ds$ voc= poder visualiar a pequena casa.

    http://www.eternix.com.br/pt/3dgamebuilder/casa_3ds.rarhttp://www.eternix.com.br/pt/3dgamebuilder/casa_3ds.rar
  • 7/21/2019 Tutorial 3d

    29/98

    Agora que j vimos como o modelo , vamos import-lo para dentro do nosso jogo, *ec&e o odel MieVer,

    ele serve somente para visualiar os modelos +. Molte para o + #ame

  • 7/21/2019 Tutorial 3d

    30/98

    ?etorne para a tela principal do + #ame

  • 7/21/2019 Tutorial 3d

    31/98

    Note que agora a c%mera esta se movendo de maneira di*erente das criadas nos projetos anteriores, isto

    porque de*inimos no inicio que este projeto seria do tipo namic "amera #ame$, assim c%mera se move

    dinamicamente ao redor do ator principal.

    No pr(ximo tutorial aprenderemos como criar um terreno usando um 5eig&tmap$.

    TUTORIAL 0> 8 CRIANDO UM TERRENO

    Neste tutorial aprenderemos como criar um terreno usando um &eig&tmap. Hm 5eig&tmap consiste em

    uma super*;cie + *ormada a partir de uma imagem /, esta imagem constitu;da por tons de cina e a

    varia24o de cor usada para a *orma24o da super*;cie, onde tons claros representam os locais de maior

    eleva24o e os escuros os de menor eleva24o. 7s 5eig&tmaps normalmente s4o utiliados para a cria24o de

    terrenos, pois possibilitam a *orma24o de ambientes externos, como montan&as, de maneira rpida e *cil.

    Primeiramente crie um novo projeto ou use um anterior, em seguida v at o menu

    5eig&tmaps. A seguinte tela ser exibida:

  • 7/21/2019 Tutorial 3d

    32/98

    'ste o cadastro de 5eig&tmaps, nele s4o importadas as imagens / que *ormar4o o terreno + e

    tambm s4o de*inidas algumas de suas propriedades. A seguir ser4o explicadas mais detal&adamente todas as

    propriedades que s4o poss;veis de*inir em um 5eig&tmap.

    - I!a$e!?e*ere se a imagem constitu;da por tons de cina que ser utiliada para *ormar o terreno, esta

    imagem deve estar no *ormato

  • 7/21/2019 Tutorial 3d

    33/98

    Agora vamos criar o nosso terreno, primeiramente devemos cadastrar um material para aplicarmos sobre o

    terreno, crie um material de sua pre*er=ncia, eu utiliarei a #rama$ que *oi criado em um tutorial anterior. Ap(s

    criar o material volte ao editor de 5eig&tmaps e clique em novo e de o nome de )erreno$ ou outro nome que

    voc= pre*erir. 'm seguida clique na imagem e selecione o arquivo terrain.bmp$, em seguida selecione o

    material que ser aplicado no terreno e altere o Pitc&Angle para 9, por enquanto voc= pode manter as outras

    op23es padr4o. "lique em salvar e estar ponto o seu 5eig&tmap.

    ?etorne para a tela principal do + #ame

  • 7/21/2019 Tutorial 3d

    34/98

    Note que a textura aplicada sobre o terreno @nica, n4o & di*erencia24o de partes do terreno, seria

    interessante que as regi3es com maior eleva24o possu;ssem uma textura di*erenciada, para isto o + #ame

  • 7/21/2019 Tutorial 3d

    35/98

    'ste o cadastro de !1box, nele s4o importadas as S imagens que comp3em s1box. Mamos criar um

    novo s1box, para isto *a2o o donVload do seguinte arquivo que contem um s1box:

    &ttp:WWVVV.eternix.com.brWptW+dgamebuilderWs1box.rar

    escompacte o arquivo e voc= ver as S imagens que comp3em o s1box, agora volte para o + #ame

  • 7/21/2019 Tutorial 3d

    36/98

    ?etorne para a tela principal do + #ame

  • 7/21/2019 Tutorial 3d

    37/98

    No pr(ximo tutorial come2aremos a entrar na parte de cria24o de eventos e criaremos o nosso primeiro

    script.

    TUTORIAL 11 8 CRIANDO UM E+ENTO

    Neste tutorial aprenderemos como criar um evento no + #ame

  • 7/21/2019 Tutorial 3d

    38/98

    Aqui s4o listados os eventos que podem ser criados no objeto que est selecionado, a seguir ser4o

    explicados mais detal&adamente cada um deles:

    - O#C"i&4 'vento que ocorre quando o usurio clica sobre o objeto.

    - O#I#tera&t 'vento que ocorre quando o usurio estiver colidindo com o objeto e pressionar uma tecla de

    a24o, por padr4o esta tecla 'nter$, mas pode ser alterada nas propriedades do projeto.

    - O#Loop'vento que ocorre repetidamente d=s do momento em que o objeto *or criado at o momento

    que ele *or destru;do.

    - O#Co""isio#'vento que ocorre no momento que o ator estiver colidindo com o objeto.

    Alm dos eventos associados ao objeto tambm existem eventos associados ao mapa, para acessar estes

    eventos use o menu apa Q 'ventos$, os eventos que podem ser de*inidos em um mapa s4o:

    - O#Create 'vento que ocorre uma ve no momento em que o mapa criado.

    - Mai#Loop 'vento que ocorre repetidamente d=s do momento em que o mapa *or criado at o momento

    que ele *or destru;do.

    - O#Destro)'vento que ocorre uma ve no momento em que o mapa destru;do.

    - O#C"i&4'vento que ocorre quando o usurio e*etua um clique com o mouse.

    - O#Co""isio#'vento global de colis3es, ocorre sempre que uma colis4o entre objetos ocorrer no mapa.

    "omo o que n(s queremos que o elevador suba no momento em que o ator estiver colidindo com o

    elevador ent4o vamos utiliar o evento 7n"ollision$ do objeto, clique sobre o evento 7n"ollision$ na paleta

    eventos.

  • 7/21/2019 Tutorial 3d

    39/98

    'ste o editor de eventos, aqui s4o criados e editados os scripts utiliados para executar a23es durante o

    jogo. 7 primeiro bot4o acima do editor usado para salvar o script e o segundo utiliado para veri*icar poss;veis

    erros no script, antes de salvar necessrio *aer a veri*ica24o de erros, n4o poss;vel salvar scripts que

    possuam erros. Para *acilitar a cria24o dos scripts durante a escrita dele poss;vel pressionar ")?6L'!PAZ7

    para que todos os comandos sejam exibidos o*erecendo a possibilidade do comando ser auto completado alm

    possibilitar visualiar todos os par%metros recebidos pelas *un23es.

    A linguagem script do + #ame

  • 7/21/2019 Tutorial 3d

    40/98

    sem nen&uma veri*ica24o de colis4o, para que *unciona-se desta maneira seria necessrio tornar o elevador um

    objeto din%mico e usar o comando ApplKorce$ para mov=-lo, mas existe uma maneira mais *cil, mover

    juntamente com o elevador o ator, usando o mesmo comando !et7bjectPosition mas desta ve no objeto

    Plaer$, o objeto Plaer$ um objeto que existe dentro de todos os mapas e representar o ator principal, ent4o

    o novo script *icou assim:

    ifGetObjectPositionY('Objeto1') < 2 thenbegin

    SetObjectPosition('Objeto1', GetObjectPositionX('Objeto1'), GetObjectPositionY('Objeto1')+0.01, GetObjectPositionZ('Objeto1')); SetObjectPosition('Playe', GetObjectPositionX('Playe'), GetObjectPositionY('Playe')+0.01, GetObjectPositionZ('Playe'));end;

    'st pronto, agora clique no segundo bot4o no editor de eventos para veri*icar se &ouve algum erro no

    script, se voc= *e tudo corretamente ele n4o encontrar nen&um erro, caso encontro, o erro ser exibido abaixo

    do editor, se n4o &ouver nen&um erro clique em salvar no editor de script e salve tambm o seu mapa. Agora

    voc= pode executar o projeto e visualiar o resultado, quando o ator estiver sobre o elevador ele vai ser elevado

    at a segunda plata*orma.

    'ste *oi apenas um pequeno exemplo do que poss;vel *aer com um script, a linguagem script do +

    #ame

  • 7/21/2019 Tutorial 3d

    41/98

    Neste tutorial aprenderemos como exibir mensagens de dialogo usando o + #ame

  • 7/21/2019 Tutorial 3d

    42/98

    Acesse o meu ateriais$ e crie os dois materiais com estas imagens e com os nome de

    KaceAtor$ e KaceainActor$.

    Agora vamos ao script que exibir o dialogo entre os atores, lembre-se de alterar o nome dos objetos

    con*orme o seu cenrio, o 7bjeto+$ o cubo do tipo 'ventArea$ do cenrio, caso o seu cubo possua outro

    nome altere-o no script ou no seu objeto.

    var!ialo"o#$nte"e;

    !ialo"o#%&eaGlobala!e('!ialo"', 0);

    if!ialo"o % 0 then

    begin

    S*oGae!ialo"('-aceain/cto',

    'Ol',

    10,

    GetSceenit*()3100,

    0,

    GetSceen4ei"*t()3150,

    110,

    110,

    11,

    (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

    iteGlobala('!ialo"', !ialo"o+1);

    Setait9ey:(17);

    Set9ey:O9(t8e);

    !isableain/ctoontol();

    SetObject/niation('ain/cto', 'stan');

    SetObjectPosition('Objeto7',

    GetObjectPositionX('Playe'),

    GetObjectPositionY('Objeto7'),

    GetObjectPositionZ('Playe'));

    end;

    if($s9eyPess(17))and((Getait9ey$s:)) then

    begin

    if!ialo"o % 1 then

    begin

    S*oGae!ialo"('-ace/cto', 'Ol=',

    10,

    GetSceenit*()3100,

    0,

    GetSceen4ei"*t()3150,

    110,

    110,

    11,

    (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

  • 7/21/2019 Tutorial 3d

    43/98

    iteGlobala('!ialo"', !ialo"o+1);

    end

    else if!ialo"o % 2 then

    begin

    S*oGae!ialo"('-aceain/cto',

    'Po>8e ?oc@ te essa cabeAa e abBboaCCC',10,

    GetSceenit*()3100,

    0,

    GetSceen4ei"*t()3150,

    110,

    110,

    11,

    (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

    iteGlobala('!ialo"', !ialo"o+1);

    end

    else if!ialo"o % 7 then

    begin

    S*oGae!ialo"('-ace/cto',

    'DEo sei...',

    10,

    GetSceenit*()3100,

    0,

    GetSceen4ei"*t()3150,

    110,

    110,

    11,

    (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

    iteGlobala('!ialo"', !ialo"o+1);

    end

    else

    begin

    4ieGae!ialo"();

    Fnableain/ctoontol();

    iteGlobala('!ialo"', !ialo"o+1);

    SetObjectScit('Objeto7', 'Onollision', '');

    end;

    Setait9ey:(17);

    end;

    'u imagino que voc= n4o ten&a entendido muita coisa do que est acontecendo no script, ent4o vou explicar

    lin&a por lin&a. Hm conceito importante de lembrar sobre os scripts no + #ame

  • 7/21/2019 Tutorial 3d

    44/98

    para exibirmos um dialogo entre personagens n4o basta usar o comando !&oV#ameialog$, necessrio

    *aer o controle de etapas do dialogo, como *oi *eito no script acima.

    var!ialo"o#$nte"e;

    Feclara uma varivel do tipo Jnteger que servira como controle para as etapas do dialogoG

    !ialo"o#%&eaGlobala!e('!ialo"', 0);

    FHtilia o comando ?ead#lobalMare*$ para ler o valor da varivel global ialog$, caso ela n4o exista o valor

    retornado 9G

    if!ialo"o % 0 then

    F"aso o valor de ialogo$ seja 9, signi*ica que a primeira ve que o script est sendo executadoG

    S*oGae!ialo"('-aceain/cto',

    'Ol',

    10, GetSceenit*()3100,

    0,

    GetSceen4ei"*t()3150,

    110,

    110,

    11,

    (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

    F7 comando est divido em diversas lin&as para *icar vis;vel aqui, na realidade ele pode estar em apenas uma

    lin&a. 7 comando exibe a primeira caixa de dialogo com a *rase 7l$ e utiliando o material KaceainActor$

    como imagem de quem est *alando. 7s outros par%metros s4o re*erentes ao taman&o, a posi24o da caixa de

    dialogo, a posi24o da textura e do texto, os valores utiliados s4o para deixar a caixa de dilogo sempre

    centraliada na parte in*erior da tela. ' o ultimo par%metro de*ine se o texto ser *ormatado para caber na caixa

    de dialogo automaticamenteG

    iteGlobala('!ialo"', !ialo"o+1);

    FHtilia o comando Irite#lobalMar$ para alterar o valor da varivel global ialog$, incrementando-a em , insta

    signi*ica que o nosso dialogo avan2ou uma etapaG

    Setait9ey:(17);

    Fe*ine ao sistema que deve aguardar a tecla + F'nterG n4o estar pressionada para tornar a *lag Iait8eHp$

    verdadeira. Jsto utiliado para evitar que o usurio simplesmente segure a tecla 'nter$ para avan2ar o

    dialogo, utiliando a *lag Iait8eHp$ necessrio que a tecla 'nter$ seja liberada antes do dialogo avan2arG

    Set9ey:O9(t8e);

    FAltera manualmente o valor da *lag Iait8eHp$ para true, isto evita que seja necessrio pressionar 'nter$

    duas vees na primeira caixa de dialogoG

    !isableain/ctoontol();

  • 7/21/2019 Tutorial 3d

    45/98

    Fesativa o controle do ator principal pelo usurio, isto impede que jogador ande com o personagem enquanto o

    dialogo esta sendo exibidoG

    SetObject/niation('ain/cto', 'stan');

    FAltera a anima24o atual do atorG

    SetObjectPosition('Objeto7',

    GetObjectPositionX('Playe'),

    GetObjectPositionY('Objeto7'),

    GetObjectPositionZ('Playe'));

    FAltera a posi24o do 7bjeto+$, o nosso cubo do tipo 'vent Area$ que acabamos de colidir para que ele *ique

    exatamente embaixo do ator principal, para evitar que o ator saia do evento antes do dialogo acabarG

    if($s9eyPess(17))and((Getait9ey$s:)) then

    FMeri*ica se a tecla + F'nterG esta pressionada e se a *lag Iait8eHp$ esta verdadeira, caso as duaspremissas sejam verdadeiras ser exibido o pr(ximo dialogoG

    if!ialo"o % 1 then

    F"aso o pr(ximo dialogo seja o de valor G

    S*oGae!ialo"('-ace/cto',

    'Ol=',

    10,

    GetSceenit*()3100,

    0,

    GetSceen4ei"*t()3150,

    110,

    110,

    11,

    (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

    F'xibe o dialogo com a *rase 7l\$ a textura de *ace KaceAtor$, os outros par%metros j *oram explicados

    anteriormenteG

    iteGlobala('!ialo"', !ialo"o+1);

    FHtilia o comando Irite#lobalMar$ para alterar o valor da varivel global ialog$, incrementando-a em , insta

    signi*ica que o nosso dialogo avan2ou uma etapaG

    else if!ialo"o % 2 then

    F"aso o pr(ximo dialogo n4o ten&a sido o de valor e seja o de valor /G

    S*oGae!ialo"('-aceain/cto',

    'Po>8e ?oc@ te essa cabeAa e abBboaCCC',

    10,

  • 7/21/2019 Tutorial 3d

    46/98

    GetSceenit*()3100,

    0,

    GetSceen4ei"*t()3150,

    110,

    110,

    11, (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

    F'xibe o dialogo com a *rase Porque voc= tem essa cabe2a de ab(bora]]]$ a textura de *ace KaceainAtor$,

    os outros par%metros j *oram explicados anteriormenteG

    iteGlobala('!ialo"', !ialo"o+1);

    FHtilia o comando Irite#lobalMar$ para alterar o valor da varivel global ialog$, incrementando-a em , instasigni*ica que o nosso dialogo avan2ou uma etapaG

    else if!ialo"o % 7 then

    F"aso o pr(ximo dialogo n4o ten&a sido o de valor e nem o de / e seja o de valor +G

    S*oGae!ialo"('-ace/cto',

    'DEo sei...',

    10,

    GetSceenit*()3100,

    0,GetSceen4ei"*t()3150,

    110,

    110,

    11,

    (GetSceen4ei"*t()3150)+56,

    16,

    (GetSceen4ei"*t()3150)+7,

    (GetSceenit*()3270),

    t8e);

    F'xibe o dialogo com a *rase N4o sei...$ a textura de *ace KaceAtor$, os outros par%metros j *oram explicados

    anteriormenteG

    iteGlobala('!ialo"', !ialo"o+1);

    FHtilia o comando Irite#lobalMar$ para alterar o valor da varivel global ialog$, incrementando-a em , insta

    signi*ica que o nosso dialogo avan2ou uma etapaG

    Else

    F"aso o pr(ximo dialogo n4o ten&a sido o de valor e nem o de / e nem o de + signi*ica que o dialogo acabou.G

    4ieGae!ialo"();

    F'sconde a caixa de dialogoG

  • 7/21/2019 Tutorial 3d

    47/98

    Fnableain/ctoontol();

    F5abilita novamente o controle do ator principal para o jogadorG

    iteGlobala('!ialo"', !ialo"o+1);

    FJncrementa pela ultima ve valor da varivel global ialog$G

    SetObjectScit('Objeto7', 'Onollision', '');

    F?emove o script 7n"ollision$ do objeto 7bjeto+$G

    Setait9ey:(17);

    F!empre que a tecla + F'nterG *or pressionada o comando !etIait8eHp$ utiliado para aguardar que ela

    seja liberada novamenteG

    Kinalmente colocando o script acima no + #ame

  • 7/21/2019 Tutorial 3d

    48/98

    Primeiramente crie um novo projeto, c&ame o primeiro mapa de apa9$ e em seguida crie um pequeno

    cenrio nele com uma base s(lida para que o ator principal possa andar sobre ela e tambm crie uma estrutura

    representando um prdio, pode um cubo grande e um pequeno com uma textura de porta no pequeno, quando

    o nosso o ator principal colidir com a porta mudaremos o cenrio para um outro mapa, quando concluir o cenrio

    dever estar parecido com este:

    Agora vamos criar um novo mapa, para isso v at o menu Arquivo -> Novo apa$, c&ame o novo mapa de

    apa9/$. Neste mapa crie um cenrio interno, para isso utilie S cubos posicionados para *ormar um outro

    cubo, o nosso cenrio ser o interior deste cubo, utilie as mesma texturas usadas para *aer o prdio no mapa

    anterior para as paredes e uma outra para o c&4o, em uma das paredes posicione a mesma porta utiliada no

    outro mapa. Ap(s concluir o cenrio deve estar parecido com este:

  • 7/21/2019 Tutorial 3d

    49/98

    "om os dois ambientes prontos vamos criar os scripts para a mudan2a entre os mapas, volte para o

    apa9$, para isso utilie aba apas$ que esta pr(xima a paleta de objetos, nesta aba s4o listados todos os

    mapas do projeto atual.

    "om o apa9$ aberto selecione a porta criada e v at o evento 7n"ollision$, vamos criar o evento quecarregar o apa9/$ ao colidirmos com ela. Para carregar um novo mapa existe o comando 6oadap$ e para

    exibir uma tela enquanto este novo mapa carregado podemos usar o comando !&oV6oading!creen$. Antes

    de criar o script crie um novo material c&amado 6oad!creen$ com uma textura que ser exibida enquanto o

    novo mapa estiver sendo carregado. 7 script para mudan2a de mapa *icou assim:

    S*ooain"Sceen('oaSceen', '', 0, 0);

    oaa('aa02."b', 0, 1, 0, 10);

    7 comando !&oV6oading!creen$ recebe como par%metro o nome do materialWtextura a ser exibido na tela,

    no meu caso 6oad!creen$, o segundo par%metro um texto para ser exibido, como a min&a imagem j possu;a

    um texto deixei este texto em branco, e os outros dois par%metros s4o re*erentes a posi24o x, do texto a serexibido. 7 "omando 6oadap$ recebe como par%metro o nome do mapa a ser carregado, no caso

    apa9/.gbm$, n4o esque2a-se de sempre incluir a extens4o do arquivo .gbm$, os pr(ximos + par%metros s4o

    re*erentes as coordenadas x, , onde o ator principal ir aparecer no novo mapa, dependendo de como voc=

    modelou o seu cenrio ser necessrio alterar estes valores, e o ultimo par%metro o tempo de espera em

    milisegundos para que o mudan2a de mapa ocorra.

    !alve o script e o mapa, em seguida, ainda no apa9$ vamos criar mais um evento, acesse o menu apa

    -> 'ventos -> 7n"reate$, este evento ocorre sempre que o mapa criado, dentro do evento adicione o seguinte

    script:

    4ieoain"Sceen();

  • 7/21/2019 Tutorial 3d

    50/98

    'ste comando esconde a tela que vamos exibir enquanto um mapa estiver sendo criado, como no pr(ximo

    mapa tambm exibiremos esta tela ao carregarmos novamente o apa9$ devemos escond=-la quando o

    mapa estiver completamente carregado.

    Para concluir salve o script e o mapa, agora atravs da aba apas$ abra novamente o apa9/$.

    Ka2a a mesma coisa para a outra porta que est neste ambiente, crie o script 7n"ollision$ para ela com o

    seguinte script:

    S*ooain"Sceen('oaSceen', '', 0, 0);

    oaa('aa01."b', 0, 1, 0, 10);

    "omo voc= pode notar o script praticamente o mesmo do utiliado no mapa anterior porm agora

    carregado o apa9.gbm$, outro par%metro que tambm pode mudar posi24o inicial do ator principal no

    comando 6oadap$ dependendo de como voc= modelou o seu cenrio.

    'm seguida salve o script e o mapa, neste mapa tambm crie um evento 7n"reate$ para ele, assim como

    *oi *eito no apa9$ acessando o menu apa -> 'ventos -> 7n"reate$ e adicione o seguinte script a esteevento:

    4ieoain"Sceen();

    !alve o seu script e o seu mapa, se voc= *e tudo corretamente a mudan2a de mapas esta completa, para

    testar como *icou execute o jogo, ande com o ator at a porta criada, ao colidir com ela o outro mapa ser

    criado, e neste outro mapa colidindo novamente com a porta o ator retornar para o mapa anterior.

  • 7/21/2019 Tutorial 3d

    51/98

    'ste *oi mais um exemplo do que pode ser *eito utiliando a linguagem script, nos pr(ximos tutoriais

    aprenderemos a *aer outras coisas utiliando scripts.

    UTORIAL 1 8 ADICIONANDO INTELINCIA ARTI'ICIAL 9IA:

    Neste tutorial aprenderemos como criar um ator inteligente no + #ame

  • 7/21/2019 Tutorial 3d

    52/98

    Agora vamos tornar o nosso ator inteligente, selecione o Ator / criado, v at a aba 'ventos$ e clique

    em 7n6oop$, o editor de scripts ser exibido, o evento 7n6oop$ ocorre repetidamente d=s do momento em que

    o objeto *or criado at o momento que ele *or destru;do. 'm seguida adicione o seguinte script ao evento:

    ifGetObject!istance('Objeto1','Playe') < 1 then

    begin

    ifGetObject/niation('Objeto1')

  • 7/21/2019 Tutorial 3d

    53/98

    onde ser aplicado a *or2a, e a quantidade de *or2a aplicada nos eixo , B e C. ' os comandos

    #et7bjectAnimation$ e !et7bjectAnimation$ s4o responsveis por controlar as anima23es do ator.

    !alve o script e o mapa e execute o jogo, voc= perceber que ao aproximar-se do Ator / ele correra em

    sua dire24o, e quando ele c&egar bem pr(ximo ele levantara as m4os.

  • 7/21/2019 Tutorial 3d

    54/98

    "omo voc= pode notar adicionar intelig=ncia arti*icial a um objeto extremamente *cil, este *oi um exemplo

    simples de intelig=ncia arti*icial, porm outros algoritmos mais complexos tambm podem ser implementados

    utiliando a linguagem script. Nos pr(ximos tutoriais aprenderemos a *aer outras coisas utiliando a linguagem

    scripts.

    TUTORIAL 15 8 ACE((ANDO UM BANCO DE DADO(

    Neste tutorial aprenderemos como acessar um banco de dados Access$, ler e gravar dados nele, usando a

    linguagem script do + #ame

  • 7/21/2019 Tutorial 3d

    55/98

    Agora vamos criar um script de leitura de dados, quando o mapa *or carregado devemos ler os dados da

    tabela ator$. Para isso acesse o menu apas -> 'ventos -> 7n"reate$, o script para a leitura do nome *icou

    assim:

    varonn# I/!Oonnection;

    var!ataSet# I/!O!ataset;

    onn#%I/!Oonnection.eate('Po?ie%icosot.Jet.OF!K.L.0;!ata

    So8ce%#MbNeelo.b;');

    !ataSet#%onn.Fec8te('select noe, ene"ia o ato *ee i % 0');

    if!ataSet.&ecoo8nt

  • 7/21/2019 Tutorial 3d

    56/98

    6embre-se que 7bjeto/$ e 7bjeto+$ s4o os nomes dos meus objetos do tipo 6abel$ que est4o na parte

    superior da tela, caso os seus possuam outro nome, altere o script para o nome dos seus objeto, ou ent4o altere

    o nome dos seus objetos no mapa para os respectivos nomes. ' os nomes 7bjetoR$, 7bjetoS$, 7bjeto[$ e

    7bjetoO$ s4o re*erentes aos outros objetos do tipo #HJ 7bjects$ que *ormam o *ormulrio de altera24o do

    nome.

    Agora vamos explica24o de cada uma das lin&as do script.

    varonn# I/!Oonnection;

    Feclara um objeto do tipo )A7"onnection$, ele responsvel pela conex4o com o banco de dadosG

    var!ataSet# I/!O!ataset;

    Feclara um objeto do tipo )A7ata!et$, ele responsvel por utiliar os dados provenientes da conex4oG

    onn#%I/!Oonnection.eate('Po?ie%icosot.Jet.OF!K.L.0;!ata

    So8ce%#MbNeelo.b;');

    F"ria o objeto "onn$ de*inindo a !tring de conex4o com o banco de dados, esta string de conex4o a mesma

    utiliada pelos objetos da paleta A7$ ou

  • 7/21/2019 Tutorial 3d

    57/98

    iteGlobala('FitaDoe', 0);

    F"ria uma varivel global para ser utiliada como controle do *ormulario vis;vel ou n4o vis;velG

    !ataSet.ee;

    Festr(i o objeto ata!et$ liberando-o do da mem(riaG

    onn.ee;

    Festr(i o objeto "onn$ liberando-o do da mem(riaG

    !alve o script e agora vamos criar o script para alterar o valor do nome no banco, para isso selecione o

    bot4o !alvar$ do seu *ormulrio, e acesse a aba eventos$ nas propriedades do objeto, e clique no evento

    7nJnteract$ este evento ocorrer no momento que o bot4o *or clicado pelo mouse.

    7 script para grava24o de dados *icou assim:

    varonn# I/!Oonnection;

    onn#%I/!Oonnection.eate('Po?ie%icosot.Jet.OF!K.L.0;!ata

    So8ce%#MbNeelo.b;');

    onn.Fec8teS('8ate ato set noe % ' + 8oteSt(GetFitIet('Objeto6'))

    + ' *ee i % 0');

    onn.lose;

    SetabelIet('Objeto7', 'Doe# '+GetFitIet('Objeto6'));

    4ieObject('Objeto');

    4ieObject('ObjetoR');

    4ieObject('Objeto6');

    4ieObject('Objeto5');

    onn.-ee;

    6embre-se que 7bjeto[$ o nome do meu objeto do tipo 'dit$ onde o jogador ir escrever o novo nome, e

    o 7bjeto+$ o 6abel$ onde aparece o nome que est na parte superior da tela, caso os seus possuam outro

    nome, altere o script para o nome dos seus objetos, ou ent4o altere o nome dos seus objetos no mapa para os

    respectivos nomes. ' os nomes 7bjetoR$, 7bjetoS$, 7bjeto[$ e 7bjetoO$ s4o re*erentes aos outros objetos do

    tipo #HJ 7bjects$ que *ormam o *ormulrio de altera24o do nome.

    Agora vamos para a explica24o de cada uma das lin&as:

    varonn# I/!Oonnection;

    Feclara um objeto do tipo )A7"onnection$, ele responsvel pela conex4o com o banco de dadosG

    onn#%I/!Oonnection.eate('Po?ie%icosot.Jet.OF!K.L.0;!ata

    So8ce%#MbNeelo.b;');

    F"ria o objeto "onn$ de*inindo a !tring de conex4o com o banco de dados assim como *oi explicadoanteriormenteG

  • 7/21/2019 Tutorial 3d

    58/98

    onn.Fec8teS('8ate ato set noe % ' +

    8oteSt(GetFitIet('Objeto6')) + ' *ee i % 0');

    FHtilia a conex4o para executar um comando !06 de update para alterar o valor de nome$ do registro com o

    idX9$ para o valor que estiver no texto do 7bjeto[$ que o objeto do tipo 'dit$ que esta no *ormularioG

    onn.lose;

    FKec&a a conex4o com o banco de dadosG

    SetabelIet('Objeto7', 'Doe# '+GetFitIet('Objeto6'));

    FHtilia o comando !et6abel)ext$ para alterar o texto do objeto do tipo 6abel$ de nome 7bjeto+$ colocando

    como texto o texto que estiver no 'dit$ do *ormulrio$G

    4ieObject('Objeto');

    4ieObject('ObjetoR');

    4ieObject('Objeto6'); 4ieObject('Objeto5');

    F7 comando 5ide7bject$ torna um objeto invis;vel, isto *eito para que o *ormulrio para altera24o do nome

    n4o esteja vis;vel quando o jogo *or iniciado, e os meus objetos 7bjetoR$, 7bjetoS$, 7bjeto[$ e 7bjetoO$ s4o

    os objetos que *ormam o *ormulrioG

    onn.ee;

    Festr(i o objeto "onn$ liberando-o do da mem(riaG

    Agora precisamos exibir o *ormulrio para a altera24o do nome, j que ele tornado invis;vel na cria24o do

    mapa, para isto selecione o ator que *oi colocado anteriormente no mapa, e v at o seu evento 7n"ollision$,

    quando o ator principal tocar no outro ator o *ormulrio de altera24o de nome ser exibido.

    7 script para exibir o *ormulrio *icou assim:

    if&eaGlobala('FitaDoe') % 0 then

    begin

    iteGlobala('FitaDoe', 1);

    S*oObject('Objeto');

    S*oObject('ObjetoR');

    S*oObject('Objeto6');

    S*oObject('Objeto5'); end;

    6embre-se que os nomes 7bjetoR$, 7bjetoS$, 7bjeto[$ e 7bjetoO$ s4o re*erentes aos objetos do tipo #HJ

    7bjects$ que *ormam o *ormulrio de altera24o do nome, caso os seus possuam outro nome, altere o script para

    o nome dos seus objetos.

    Agora vamos explica24o do script:

    if&eaGlobala('FitaDoe') % 0 then

    FD utiliado o comando ?ead#logalMar$ para ler o valor da varivel 'ditarNome$ para saber se o *ormulrio de

    edi24o de nomes j n4o esta vis;vel, caso na esteja ele dever ser exibidoG

  • 7/21/2019 Tutorial 3d

    59/98

    iteGlobala('FitaDoe', 1);

    FAltera o valor da varivel global 'ditarNome$ para , isto signi*ica que o *ormulrio de edi24o do nome j esta

    visivelG

    S*oObject('Objeto');

    S*oObject('ObjetoR');

    S*oObject('Objeto6');

    S*oObject('Objeto5');

    F7 comando !&oV7bject$ torna um objeto vis;vel, e os objetos 7bjetoR$, 7bjetoS$, 7bjeto[$ e 7bjetoO$ s4o

    os objetos que *ormam o *ormulrioG

    !e voc= *e tudo corretamente esta pronto o seu acesso de leitura e grava24o no banco de dados, ent4o

    execute o projeto para ver o resultado.

    "omo voc= pode notar acessar um banco de dados n4o uma coisa muito complexa, poss;vel utiliar o

    banco de dados para diversas tare*as como para salvar o jogo, salvar o estado dos atores e dos objetos do

    mapa, para criar agentes que aprendem no decorrer do jogo, entre outras possibilidades. 'ste tutorial mostrou

    como acessar um banco de dados Access$, mas tambm poss;vel acessar outros *ormatos de banco, como o

    Kirebird, !06!erver, entre outros. ' tambm poss;vel acessa o banco sem utiliar a string de conex4o, basta

    criar um Alias$ para o banco e utiliar este Alias$ no lugar da string de conex4o. Nos pr(ximos tutoriais

    aprenderemos a *aer outras coisas utiliando a linguagem scripts.

    TUTORIAL 17 8 CRIANDO UM CEN6RIO COMPLETO

    Neste tutorial aprenderemos como criar um cenrio completo, com um terreno que leva a uma casa de doisandares.

  • 7/21/2019 Tutorial 3d

    60/98

    Para come2ar crie um novo projeto do tipo namic "%mera #ame$ e selecione + como *ormato do

    ator principal, ap(s adicionar o primeiro mapa ao projeto, vamos cria um 5eig&tmap mapa o nosso terreno, um

    5eig&tmap consiste em uma super*;cie + *ormada a partir de uma imagem /, esta imagem constitu;da por

    tons de cina e a varia24o de cor usada para a *orma24o da super*;cie, onde tons claros representam os locais

    de maior eleva24o e os escuros os de menor eleva24o. Para criar um 5eig&tmap pode ser utiliando o

    P&otos&op$ ou outra *erramenta de edi24o de imagens. Para criar o 5eig&tmap no P&otos&op crie uma novaimagem com o taman&o de R/ x R/, em seguida selecione como cor primria a cor preta e como cor

    secundaria a cor branca e aplique o e*eito i**erence "louds$, caso n4o ten&a gostado do resultado aplique o

    e*eito novamente, importante que exista uma rea de taman&o raovel na mesma cor, este local ser plano e

    poderemos criar a casa, em seguida aplique duas ou tr=s vees o e*eito

  • 7/21/2019 Tutorial 3d

    61/98

    Agora volte a edi24o do mapa e adicione o &eig&tmap que acabamos de criar no mapa, posicione-o para

    que a rea que deixamos plana *ique no centro do mapa, ser ali que criaremos a casa de dois andares.

    Para criarmos a casa vamos utiliar os objetos do pr(prio + #ame

  • 7/21/2019 Tutorial 3d

    62/98

    Agora ainda temos que adicionar as paredes externas da casa, o processo o mesmo que acabamos de

    *aer com as paredes internas, vamos at copiar a mesma parede que usamos internamente e colocarmos elas

    em volta da casa. "opie a parede interna e adicione em volta de toda a casa, tanto no andar superior como no

    andar in*erior. D aconsel&vel *aer a movimenta24o do objeto diretamente nas propriedades dele para ter um

    grau de precis4o maior. No *inal a casa deve estar parecida com esta:

  • 7/21/2019 Tutorial 3d

    63/98

    'u deixei um dos lados sem parede para termos uma mel&or vis4o do interior, mas tambm irei adicionar as

    paredes deste lado. Ainda ser necessrio alterar um pouco a estrutura da casa para adicionarmos as postas,

    janelas, escada e o elevador.

    Agora vamos criar as portas, a escada e um elevador para a casa, primeiramente vamos mudar a estrutura

    da casa para que possamos adicionar as portas, janelas e o elevador, come2aremos pelas portas, selecione

    uma das paredes do lado de baixo, altere a propriedade !cale$ dela para XR, os outros valores podem ser

    mantidos, em seguida posicione-a para o canto esquerdo at que ela *ec&a completamente a parede do lado

    esquerdo, voc= entender mel&or vendo como *icou a imagem a seguir, agora *a2a uma copia desta parede e

    cole-a novamente no mapa, ou ent4o adicione outro cubo a cenrio, altere as propriedades !cale$ dela para

    X/,R e manten&a as outras propriedades iguais parede anterior, movimente a totalmente para o canto direito

    da casa para completar o outro canto da parede, voc= j poder ver onde ser a porta principal, mas ainda

    copie novamente esta parede, cole ela no mapa e altere as propriedades !cale$ dela para X/,+ e BX9,, e

    posicione-a na parte superior do buraco da porta. 7 resultado deve ter *icado parecido com este:

  • 7/21/2019 Tutorial 3d

    64/98

    Agora vamos adicionar mais um porta ligando os dois c_modos do andar in*erior, o processo o mesmo que

    acabamos de realiar, selecione a parede central da casa do andar in*erior, altere a propriedade !cale$ dela

    para XR, os outros valores podem ser mantidos, em seguida posicione-a para o canto esquerdo at que ela

    *ec&a completamente a parede do lado esquerdo, agora *a2a uma copia desta parede e cole-a novamente no

    mapa, ou ent4o adicione outro cubo a cenrio, altere as propriedades !cale$ dela para X/,R e manten&a as

    outras propriedades iguais parede anterior, movimente a totalmente para o canto direito da casa para

    completar o outro canto da parede, copie novamente esta parede, cole ela no mapa e altere as propriedades

    !cale$ dela para X/,+ e BX9, e posicione-a na parte superior do buraco da porta. 7 resultado desta

    segunda porta deve ter *icado parecido com este:

  • 7/21/2019 Tutorial 3d

    65/98

    Ka2a tambm uma terceira porta interligando os c_modos superiores, o processo exatamente o mesmo

    que *oi *eito com esta porta que interliga os c_modos do andar in*erior.

    Agora vamos *aer uma abertura no c&4o do segundo andar para colocarmos a escada e o elevador. Para

    isso selecione o c&4o do segundo andar e altere a propriedade !cale$ dele para X[,R e CX[,R e movimente-

    o para a parte *rontal da casa e para a direita, para que o espa2o aberto *ique na parte oposta a porta de

    entrada da casa que criamos por primeiro. Agora *a2a uma copia do c&4o, note que n4o poss;vel *aer uma

    copia de um objeto que j uma copia, ent4o localie o c&4o que objeto pai dos outros para *aer a copia dele,

    ou ent4o adicione um novo cubo ao mapa e altere as sua propriedade para que ele *ique com as mesmas

    caracter;sticas do c&4o, em seguida altere a propriedade !cale$ dele para X/,R e CXR e posicione-o na parte

    oposta entrada da casa no espa2o que *icou vaio ap(s o redimensionamento do c&4o do andar superior,

    dever *icar dois buracos, um em cada canto do andar superior, em um deles ser colocado a escada e no outro

    o elevador, no espa2o a direita que *icou totalmente aberto copie novamente um objeto do c&4o altere a

    propriedade !cale$ dele para XR e CX/,R e posicione-o para *ec&ar o buraco porem dando prioridade a parte

    pr(xima a porta de entrada, como neste buraco ser a escada necessrio q ele seja maior que o do elevador.

    7 buraco do elevador deve ter *icado parecido com este:

  • 7/21/2019 Tutorial 3d

    66/98

    Agora vamos criar a estrutura da escada que levar ao segundo andar, crie um novo cubo e altere as

    propriedades !cale$ dele para X9,R BX9,R e CX/,R este cubo representar um degrau, em seguida posicione-o

    no buraco maior que *ica no mesmo c_modo da porta de entrada da casa, vamos come2ar a montar a escada,

    deve ser come2ar colocando os degraus pela parte de cima, posicione-o para que ele *ique na mesma altura do

    c&4o do andar superior, em seguida *a2a uma copia deste cubo e mova-o um pouco para baixo e um pouco para

    *rente, este ser o segundo degrau, *a2a o mesmo processo para os demais degraus at c&egar no c&4o, o

    resultado deve ser parecido com este:

  • 7/21/2019 Tutorial 3d

    67/98

    "omo voc= pode notar as paredes, o c&4o e a escada est4o todos iguais, e n4o tem um aspecto muito

    bonito, no pr(ximo passo iremos adicionar texturas a esta casa para tornar os objetos mais realistas e em

  • 7/21/2019 Tutorial 3d

    68/98

    seguida colocaremos as portas nos seus determinados lugares e programaremos os scripts para abri-las e

    *ec&-las, e tambm os scripts para mover o elevador.

    Antes de come2armos o a adicionar as texturas a casa devemos antes selecionar as texturas que

    utiliaremos, eu selecionei uma textura de tijolos para as paredes e de piso para o c&4o, caso deseje poss;vel

    utiliar outras texturas, as texturas selecionadas s4o as seguintes:

    FParedeG FParede/G

    FParede+G F"&aoG

  • 7/21/2019 Tutorial 3d

    69/98

    F"&ao/G F"&ao+G

    F'scadaG

    Moc= pode notar que *oram criadas varia23es das texturas do c&4o e das paredes, a textura mesma,

    porm *oi alterado o seu taman&o e *orma, isto *oi *eito para manter as paredes de taman&o menor, como o

    caso das utiliadas sobre as portas, com a mesma apar=ncia das paredes maiores.

    7 pr(ximo passo importar estas texturas para o + #ame

  • 7/21/2019 Tutorial 3d

    70/98

    "omo voc= pode notar as texturas *icaram da mesma cor, sem nen&uma varia24o de tonalidade ao serem

    expostas a lu do ambiente, para torn-las mais realistas deve ser alterar a propriedade )extureode$ do

    material para odulate$, volte ao menu aterial$ e altere a propriedade )extureode$ de

    todas as texturas utiliadas na casa para odulate$. Ao retornar a edi24o de mapas voc= j poder ver o

    resultado:

  • 7/21/2019 Tutorial 3d

    71/98

    Ao utiliar texturas no modo odulate$ necessrio prestar mais aten24o nas lues utiliadas no ambiente,

    para se ter o resultado desejado deve-se criar uma *onte de lu adequada para o ambiente.

    Ap(s ter *eito a estrutura da casa necessrio programar os scripts para alguns eventos que podem ser

    executados nela, como o casa da abertura das portas.

    Mamos come2ar com as portas, como ainda n4o colocamos as portas *isicamente vamos importar o modelo

    de uma porta para o + #ame

  • 7/21/2019 Tutorial 3d

    72/98

    Ka2a o doVnload do arquivo do modelo no seguinte lin1:Porta.rar, ele esta no *ormato +ds e *oi modelado

    utiliando o il1s&ape+, porm poderia ter sido criando em qualquer outro so*tVare de modelagem +, s(

    importante lembrar que como a porta ira girar na &ora de abrir devemos modelar ela com o a parte das

    dobradi2as da porta diretamente no seu eixo B, pois ser neste eixo em que ela ser rotacionada quando *or

    aberta.

    Para importar o objeto para o mapa v at o menu 7bjetos$, crie um novo objeto,

    importe o arquivo do modelo, em seguida altere a propriedade !cale$ dele para X9, BX9, e CX9, e apropriedade Pitc&Angle$ para 9, em seguida salve o objeto. Agora copie o arquivo )ex/.jpg$ que acompan&a

    o tutorial para a pasta )extures$ do seu projeto, necessrio *aer isso porque o modelo da porta possui esta

    textura que *oi aplica sobre ele no programa de modelam, ent4o para que na pr(xima ve que o modelo *or

    carregado ele possa encontrar a sua textura, a pasta base para texturas externas sempre a pasta )extures$,

    ent4o sempre que importar um modelo que possua uma imagem como textura este arquivo deve ser copiado

    para a pasta )extures$.

    Agora retorne para a edi24o de mapa e selecione a categoria de objeto 7bjetos$ na paleta de objetos, para

    adicionar a porta ao mapa de um duplo clique sobre a porta que voc= acabou de criar. 'm seguida posicione-a

    para que ela *ec&e completamente o buraco que *oi criado para a porta de entrada da casa, ser necessrio

    alterar o taman&o dela para que ela seja encaixada no buraco. Ap(s concluir o posicionamento ela *icar

    parecida com esta:

    http://www.3dgamebuilder.com.br/pt/3dgamebuilder/porta.rarhttp://www.3dgamebuilder.com.br/pt/3dgamebuilder/porta.rarhttp://www.3dgamebuilder.com.br/pt/3dgamebuilder/porta.rar
  • 7/21/2019 Tutorial 3d

    73/98

    Agora vamos criar o script para abertura desta porta, *aremos com que o ator principal possa empurrar a

    parta para que ela se abra, selecione a porta, em seguida v at a aba eventos e selecione o evento

    7n"ollision$. 7 script para abertura da porta *icou assim:

    ifGetObject&oll/n"le('Objeto77') H 0 then

    SetObject&oll/n"le('Objeto77', GetObject&oll/n"le('Objeto77')+1);

    7 7bjeto++$ nome da min&a porta, caso a sua possua outro nome altere no script para o nome correto, no

    script veri*icado inicialmente a rota24o da porta com o comando #et7bjet?ollAngle$ coso ele seja maior que 9

    ent4o quer dier que a porta ainda n4o atingiu o ponto maximo de abertura, dependendo da orienta24o em que

    voc= criou a sua casa pode ser necessrio alterar este valor, caso ela ainda n4o ten&a atingido o maximo de

    rota24o ent4o utiliado o comando !et7bject?ollAngle$ para incrementar o %ngulo atual em mais um, por isso

    utiliado novamente o comando #et7bjet?ollAngle$ e ao valor retornado acrescentado mais . D importante

    lembrar que este script ser executado sempre que o ator principal tocar na porta.

    Na segunda porta, que interliga os dois c_modos do primeiro andar o processo de abertura o mesmo, oscript desta porta *icou assim:

    ifGetObject&oll/n"le('Objeto72') H 3T0 then

    SetObject&oll/n"le('Objeto72', GetObject&oll/n"le('Objeto72')31);

    7 7bjeto+/$ o nome da min&a porta, como voc= pode notar a @nica coisa que mudou neste script *oi o

    %ngulo maximo e tambm que neste ao invs de incrementar o %ngulo eu decremento ele, como eu disse

    anteriormente este %ngulo depende da orienta24o em que as paredes *oram *itas, pode ser necessrio alterara-

    lo caso voc= ten&a *eito elas em outra orienta24o, a mel&or maneira de encontrar o %ngulo maximo de abertura

    durante a edi24o do mapa rotacionar a porta at c&egar ao %ngulo maximo desejado e utiliar este %ngulo no

    script. 7 processo o mesmo para a porta que interliga os dois c_modos do segundo andar.

  • 7/21/2019 Tutorial 3d

    74/98

    Ao concluir todas as portas j ser poss;vel executar o jogo, andar pela casa e abrir todas as portas,

    dependendo das escalas utiliadas na casa pode ser necessrio alterar o taman&o do ator principal para que ele

    *ique em um taman&o proporcional a casa, para alterar o taman&o dele acesse o menu Projeto -> Ator

    Principal$, altere as propriedades !cale$ e "ollision !cale$ para deixar o ator proporcional ao cenrio, a

    propriedade !cale$ do meu ator *icou sendo a seguinte X9,9TT BX9,9TT e CX9,9TT e "ollision!cale$ *icou

    X BX e CX. )ambm pode ser necessrio ajustar a distancia da c%mera principal em rela24o ao ator, como*oi aumentado o seu taman&o ser necessrio que a c%mera que o acompan&a *ica mais distante, para alterar

    esta distancia acesso o menu Projeto->"%mera Principal$ e altere a propriedade istance)oActor$ para o valor

    desejado, eu utiliei uma distancia de +. 'xecutando o jogo voc= ver o resultado:

    Agora vamos adicionar o elevador que ir do primeiro andar, para o elevador utilie um cubo normal, altere a

    propriedade !cale$ dele para X /,+ BX9,/ e CX/,T e posicione-o no primeiro andar embaixo do buraco deixado

    para ele de maneira que quando ele subir ele passe per*eitamente pelo espa2o deixado no c&4o do segundo

    andar, em seguida importe a seguinte textura para o + #ame

  • 7/21/2019 Tutorial 3d

    75/98

    F'levadorG

    Altere a propriedade )exture!cale$ deste material para X/ BX/ e CX/ e aplique-a no cubo criado para oelevador. Agora vamos criar o script que *ar o elevador subir e descer. !elecione o elevador e v at o seu

    evento 7nJnteract$ *aremos um script para que quando o jogador pressionar a tecla 'nter$ o elevador

    subaWdes2a. 7 script para movimenta24o do elevador *icou assim:

    if&o8n(GetObjectPositionY('Objeto7L')) % 0 then

    iteGlobala('Fle?ao:', t8e);

    ifGetObjectPositionY('Objeto7L') H L then

    iteGlobala('Fle?ao!on', t8e);

    'm seguida explicarei como *unciona este script, mas antes vamos criar mais um script que *ar parte da

    movimenta24o do elevador, acesse o menu apa->'ventos->ain6oop$, o evento ain6oop$ um evento que

    ocorrer em loop enquanto o mapa estiver caregado. 7 script ain6oop$ *icou assim:

    if&eaGlobala('Fle?ao:') % t8e then

    begin

    SetObjectPosition('Objeto7L',

    GetObjectPositionX('Objeto7L'),

    GetObjectPositionY('Objeto7L')+0.1,

    GetObjectPositionZ('Objeto7L'));

    SetObjectPosition('Playe',

    GetObjectPositionX('Playe'),

    GetObjectPositionY('Playe')+0.1,

    GetObjectPositionZ('Playe'));

    ifGetObjectPositionY('Objeto7L') H L then

    iteGlobala('Fle?ao:', alse);

    end

    else if&eaGlobala('Fle?ao!on') % t8e then

    begin

    SetObjectPosition('Objeto7L',

    GetObjectPositionX('Objeto7L'),

    GetObjectPositionY('Objeto7L')30.1,

    GetObjectPositionZ('Objeto7L'));

    SetObjectPosition('Playe',

    GetObjectPositionX('Playe'),GetObjectPositionY('Playe')30.1,

  • 7/21/2019 Tutorial 3d

    76/98

    GetObjectPositionZ('Playe'));

    if&o8n(GetObjectPositionY('Objeto7L')) % 0 then

    iteGlobala('Fle?ao!on', alse);

    end;

    7 script de movimento do elevador *unciona da seguinte maneira, primeiramente o script 7nJnteract$ doelevador aguarda o pressionamento da tecla 'nter$ pelo jogador quando ele estiver sobre o elevador, quando a

    tecla *or pressionada o script 7nJnteract$ ser executado, nele o comando #et7bjectPositionB veri*ica se o

    elevador esta na posi24o 9 do eixo B, utiliado o comando ?ound$ pare arredondar o valor da posi24o. "aso o

    elevador esteja na posi24o 9 quer dier que ele esta na primeiro anda, ent4o utiliado o comando

    Irite#lobalMar$ para criar uma varivel global c&amada 'levadorHp$ e nela colocada o valor boleando

    true$, enquanto isto o evento ain6oop$ do mapa j estava sendo executado e nele estava sendo utiliado a

    *un24o ?ead#lobalMar$ tentando ler a varivel 'levadorHp$, no momento que ela *oi criado e o seu valor

    de*inido como true$ o evento ain6oop$ conseguira ler esta varivel e ent4o ser utiliado o comando

    !et7bjectPossition$ para *aer com que o elevador suba para o segundo andar gradativamente juntamente com

    o ator principal, e quando o elevador c&egar na posi24o T no seu eixo B, isto sigini*ica que o elevador c&egou ao

    segundo andar, ent4o utiliado novamente o comando Irite#lobalMar$ para alterar o valor da varivel global

    'levadorHp$ para *alse$ isto *ar com que o elevador pare de subir. 7 mesmo processo *eito para *aer com

    que o elevador des2a e utiliado a varivel global 'levadoroVn$. D importante lembrar que o 7bjeto+T$ no

    meu script o elevador, caso o seu possua outro nome altere o script. 'xecutando o jogo ser poss;vel ver o

    *uncionamento do elevador.

    Agora vamos concluir o tutorial decorando o ambiente para deix-lo mais bonito, primeiramente vamos

    adicionar um tel&ado a casa, para isso adicione a textura que utiliaremos neste tel&ado.

  • 7/21/2019 Tutorial 3d

    77/98

    F)el&adoG

    Ap(s cadastrar a textura para o tel&ado altere tambem a propriedade )exture!cale$ dela para X/ BX/ eCX/. Agora vamos inseri-lo no mapa, utilie um objeto )rapio$ da paleta

  • 7/21/2019 Tutorial 3d

    78/98

    FUanelaG

    ?etorne para a edi24o de mapas e adicione um novo cubo ao ambiente, altere a propriedade !cale$ delepara X9,/ BX/ e CX+ e aplique a textura da janela neste cubo, agora posicione-o no local onde voc= desejar

    um janela, e caso queira mais janelas basta copiar e colar e posicionar a copia no local desejado.

    Agora adicione o !1box de*ault que acompan&a o + #ame

  • 7/21/2019 Tutorial 3d

    79/98

    6embre-se de alterar a propriedade )extureode$ para odulate$ na maioria dos materiais para se ter um

    resultado visual mais realista, mas lembre-se tambm que utiliando os materiais no modo odulate$

    necessrio ter uma *onte de lu con*igurada e posicionada corretamente.

    Para *inaliar vamos ativar o Kog que consiste em uma neblina no ambiente, para isso vamos antes alteraralgumas propriedades dele, acesse o menu apa->Kog$ e altere a propriedade "olor$ para Alp&aX9,9

    ?edX9,O #reenX9,O e Propriedades$ e altere a

    propriedade Kog'nabled$ para )rue e salve as altera23es. A valor de Alp&a na cor do Kog determina a sua

    intensidade, utiliamos um valor bem baixo pois o uso de um !1box com o Kog n4o tem um e*eito muito bom, o

    idia seria utiliar somente o Kog, mas como colocamos um valor baixo de Alp&a ent4o n4o tem muito problema

    em se ter um s1box no mesmo ambiente.

    ?etornando para a edi24o de mapa e selecionando a op24o Misualiar '*eitos$ no menu 7p23es-

    >Misualiar '*eitos$ poss;vel visualiar como *icou o e*eito do Kog nas montan&as mais distantes que agora

    est4o com uma tonalidade esbranqui2ada.

  • 7/21/2019 Tutorial 3d

    80/98

    "aso voc= queira alterar a posi24o inicial da c%mera basta criar um script no evento 7n"reate$ e adicionar

    o seguinte script:

    SetObjectPosition('ainaea', 310, , 0);

    7 comando !et7bjectPosition$ alterar a posi24o do objeto ain"amera$ que representa a c%mera principal

    criada automaticamente e os outros + par%metros s4o re*erentes as coordenadas x e da posi24o onde a

    c%mera ser colocada.

    Agora basta salvar o mapa e est conclu;do o cenrio.

  • 7/21/2019 Tutorial 3d

    81/98

  • 7/21/2019 Tutorial 3d

    82/98

    TUTORIAL 1 8 UTILI-ANDO O TERRAIN TETURE BUILDER

    Neste tutorial aprenderemos como utiliar o )errain )exture

  • 7/21/2019 Tutorial 3d

    83/98

    Para utili-lo, primeiramente necessrio criar um novo projeto, para isso acesse o menu Arquivo -> Novo

    Projeto$, agora poss;vel selecionar o &eig&tmap que ser usado como base para o terreno e as texturas que

    *ormaram a textura para o terreno.

    Primeiramente vamos selecionar o 5eig&tmap, clique sobre a rea destinada ao &eig&tmap e selecione a

    imagem .bmp do &eig&tmap, voc= pode utiliar a seguinte imagem:

  • 7/21/2019 Tutorial 3d

    84/98

    7u ent4o criar o seu pr(prio &eig&tmap utiliando o P&otos&op$ ou outra *erramenta de edi24o de imagens.

    Para criar o 5eig&tmap no P&otos&op crie uma nova imagem com o taman&o de /O x /O ou /RS x /RS ou R/

    x R/ ou qualquer outro taman&o multiplo, em seguida selecione como cor primria a cor preta e como cor

    secundaria a cor branca e aplique o e*eito i**erence "louds$, caso n4o ten&a gostado do resultado aplique o

    e*eito novamente, em seguida aplique duas ou tr=s vees o e*eito

  • 7/21/2019 Tutorial 3d

    85/98

    Agora basta selecionar-las no )errain )exture

  • 7/21/2019 Tutorial 3d

    86/98

    Ap(s selecionar as R texturas que *ormaram a textura do terreno necessrio de*inir o taman&o da textura

    que ser gerada, para isso altere a propriedade !ie$, o taman&o depende do taman&o do seu mapa, quanto

    maior mel&or ser a qualidade, mas tambm resultara em um arquivo maior e conseq`entemente o jogo exigira

    mais mem(ria o poder de processamento quando executad