Você está na página 1de 4

Introduo API da BGE

Tutorial de Introduo API da Blender Game Engine


Ol! Esse um pequeno tutorial de introduo API python da Blender Game Engine !"# que eu de$idi es$re%er para os ini$iantes ap&s %er muitas d'%idas a respeito disso! (amos $omear $om) import bge print("Hello World") Isso importa o m&dulo bge* onde +i$a toda a API da BGE! Para e#e$utar esse s$ript* mude seu ,modo- do .lender para Blender Game* e sua s$reen /tela0 para Game 1ogi$! 2o menu direito /editor de te#to0* es$re%a esse s$ript e nomeie3o de meus$ript!py! 2o menu in+erior $rie um sensor Al4ays e $one$te3o a um $ontrolador python $om o nome meus$ript!py! 5e +e6 tudo $erto* quando posi$ionar o ponteiro do mouse so.re a 7d %ie4 e te$lar P* o s$ript ser rodado! (eri+ique no $onsole do .lender /para os linu#ers* ne$essrio a.rir o .lender num terminal ou $on+igurar seu lanador para +a683lo0 se h algum erro entre ,Blender Game Engine 5tarted- e ,Blender Game Engine 9inished-! 5e na %erdade hou%er um :ello ;orld* ento para.ns* seu primeiro s$ript +un$iona <30

bge.logic
O bge.logic um su.3m&dulo do bge* equi%alente ao antigo GameLogic! 1em.re3se que isto apenas uma introduo* se quiser uma do$umentao $ompleta* %isite http)==444!.lender!org=do$umentation= ">Python?o$= e $lique em .ge!logi$! @omo o pr&prio nome di6* ele nos permite reali6ar operaAes l&gi$as no Bogo* $onsidero $omo +undamental num s$ript para BGE! (eBamos o pr&#imo e#emplo! #-*- coding: utf-8 -*import bge from bge import logic #O controlador em ue o no!!o !cript e!t" in!erido cont # logic.get$urrent$ontroller() #$ada controlador tem uma li!ta de !en!ore! #e atuadore! conectado! a ele me!mo. %odemo! #u!"-la! para controlar o ue acontece no &ogo !en # cont.!en!or!'(meu!en!or() act # cont.actuator!'(meuatuador() #$ada !en!or tem um atributo booleano po!iti*e ue #+ *erdadeiro !empre ue ele detecta alguma coi!a if !en.po!iti*e: act.dLoc # ',.-.,.,) #*etor /.0.1 do motion actuator cont.acti*ate(act) #ati*a o no!!o atuador Agora* testemos esse s$ript! Codi+ique seu sensor para um do tipo Dey.oard e $on+igure para disparar $om a .arra de espao* ento nomeie3o de meu!en!or! Adi$ione um atuador Cotion* nomeie3o de meuatuador e $one$te3o ao sensor python! 5olano 9elE$io F

Introduo API da BGE Agora* quando %o$8 ini$iar o Bogo e te$lar espao* o sensor Gey.oard ser ,disparado-* ou seBa* seu atri.uto positi%e ser Hrue* e as duas 'ltimas linhas no nosso s$ript sero e#e$utadas* ati%ando o atuador <30 5e quiser uma do$umentao de todos os sensores* $ontroladores* atuadores et$! da BGE* % em http)==444!.lender!org=do$umentation= ">Python?o$ e $lique em .ge!types! O m&dulo bge.logic* o.%iamente* permite3nos +a6er muito mais que isso! Esse +oi apenas um pequeno e#emplo de uso <30

bge.render
Esse m&dulo equi%alente ao antigo 2a!teri3er! 2o h muito o que e#pli$ar< ele respons%el pela renderi6ao em tempo real! (eBamos um pequeno e#emplo de uso) #-*- coding: utf-8 -*import bge from bge import render from bge import logic co # logic.get$urrent$ontroller() !en # co.!en!or!'(meu!en!or() if !en.po!iti*e: render.ma4e5creen!6ot("77!creen8#.png") Adi$ionando um sensor Gey.oard $om Hrue le%el triggering e nomeando3o de meu!en!or +ar $om que sempre que %o$8 te$le determinada te$la* seBa $riada uma imagem da tela atual do Bogo na pasta atual /do !.lend0 no +ormato !creen8numerodoframe.png! Para uma do$umentao $ompleta do .ge!render* $omo B disse* %isite a do$umentao online no site .lender!org!

bge.events
Esse m&dulo equi%alente ao antigo Game9e:!! 5ua +uno* $omo o nome B di6* $apturar e%entos /de te$lado ou mouse0! 2a %erdade* ele s& $ontem $onstantes $om os e%entos* o que se usa para $aptur3los so sensores! (eBamos um e#emplo) #-*- coding: utf-8 -*import bge from bge import logic. e*ent! co # logic.get$urrent;ctuator() !en # co.!en!or!'(meu!en!or()
for key,status in sensor.events:

for 4e:. !tatu! in !en.e*ent!: #tecla pre!!ionada if !tatu! ## bge.logic.9/8<=%>?8@>5?8;$?<A;?BC: if 4e: ## e*ent!.W9B0: #tecla W 5olano 9elE$io

Introduo API da BGE # if 4e: # if 4e: # if 4e: # Da3er alguma coi!a !e for pre!!ionada ## bge.e*ent!.59B0: #tecla 5 Da3er alguma coi!a !e for pre!!ionada ## bge.e*ent!.;9B0: #tecla ; Da3er alguma coi!a !e for pre!!ionada ## bge.e*ent!.C9B0: #tecla C Da3er alguma coi!a !e for pre!!ionada

5e %o$8 ti%er $one$tado ao seu $ontrolador python um sensor Gey.oard $hamado meu!en!or $om ,All Deys- pressionado* esse s$ript pode tratar de +orma di+erente $ada te$la* assim no ne$essria a $riao de um sensor para $ada* aumentando o desempenho e a organi6ao do Bogo <30 Assim $omo os outros m&dulos* o .ge!e%ents tem uma do$umentao online* %isite3a!

bge.texture
Equi%alente ao antigo Aideo?eEture* esse m&dulo permite3nos usar te#turas em %Edeo* atra%s do uso do poderoso 99Cpeg! O prin$Epio simples) %o$8 a$ha uma te#tura num o.Beto e#istente $om a +uno materialI? e ento $ria uma no%a te#tura de $onte'do dinImi$o que su.stituir a anterior* alo$ando3a na GPJ! (eBa um e#emplo de uso para rodar um %Edeo num o.Beto) #-*- coding: utf-8 -*import bge from bge import logic. teEture cont # logic.get$urrent$ontroller() #*amo! u!ar o ob&eto ue po!!ui o controlador atual ob& # cont.oFner #O !cript + rodado a cada frame. ma! !G podemo! #criar a teEtura uma *e3. entHo criaremo! um #atributo *ideo no bge.logic if not 6a!attr(logic. (*ideo(): #identifica a teEtura e!t"tica ue !er" !ub!tituIda mat<C # teEture.material<C(ob&. (nomedateEtura() #cria a teEtura dinJmica ue !ub!tituir" a anterior logic.*ideo # teEture.?eEture(ob&. mat<C) #define a fonte da teEtura. a ui um *Ideo *id # logic.eEpand%at6((77nomedo*ideo.ogg() logic.*ideo.!ource # teEture.AideoDDKpeg(*id) logic.*ideo.!ource.!cale # ?rue #roda o *Ideo logic.*ideo.!ource.pla:() logic.*ideo.refre!6() #atuali3a a teEtura a cada frame 5olano 9elE$io 7

Introduo API da BGE Para rodar o e#emplo a$ima* ne$essrio que o $ontrolador python esteBa $one$tado a um sensor Al4ays e o o.Beto que o $ontm tenha uma te#tura $hamada nomedateEtura! Ham.m ne$essrio* na pasta do !.lend atual* um arqui%o de %Edeo $hamado nomedo*ideo.ogg! 5e tudo $orrer .em* %o$8 %er o %Edeo sendo rodado no o.Beto atual quando rodar o Bogo )30 O bge.teEture tam.m tem do$umentao online* $riada na maior parte por mim )3?

bge.constraints
@hegamos ao nosso 'ltimo m&dulo! Ele equi%alente ao antigo %6:!ic!$on!traint!* e permite3nos manipular $onstraints %ia python em tempo real! 2o tenho muito o que e#pli$ar aqui< (eBa o e#emplo! #-*- coding: utf-8 -*import bge from bge import logic from bge import con!traint! #li!ta de ob&eto! na cena ob&eto! # logic.get$urrent5cene().ob&ect! ob&ob&L pidpidL # # # # ob&eto!'(ob&eto-() ob&eto!'(ob&etoL() ob&-.get%6:!ic!<d() #id fI!ico ob&L.get%6:!ic!<d() #id fI!ico

#po!iMNe! e Jngulo! do! ponto! po!E # -., po!: # ,., po!3 # --., angE # ,., ang: # -., ang3 # ,., #cria o con!traint con!traint!.create$on!traint(pid-. pidL. con!traint!.L<=BH<=GB8$O=5?2;<=?. po!E. po!:. po!3 angE. ang:. ang3) Esse m&dulo tam.m tem do$umentao online /e orgulhosamente es$rita inteiramente por mim )3?0* %isite3a para mais detalhes! O.rigado por ler este tutorial* e .ons estudos!

5olano 9elE$io

Você também pode gostar