quinta-feira, 7 de maio de 2020

17=BLENDER BGE SCRIPT

olá amigos hoje 07/05/2020 quinta feira, pais com esse surto de covid 19 e nosso presidente doidao mais tirando tudo isso, hoje vou apresentar algum avanço meus estudo bge .
o primeiro exemplo são movimentos básicos com ALWAYS +ADDCONTROLLER, lembrando que o Always tem esta no true para ativar constantemente o script
aqui esta script:

from bge import logic as g, events
c = g.getCurrentController()
o = c.owner
teclado = g.keyboard.events
w = teclado[events.WKEY]
s = teclado[events.SKEY]
a = teclado[events.AKEY]
d = teclado[events.DKEY]
e = teclado[events.EKEY]

if w:
    o.applyMovement([0,0.3,0])
   
if s:
    o.applyMovement([0,-0.3,0])
   
if a:
    o.applyMovement([-0.3,0,0])
   
if d:
    o.applyMovement([0.3,0,0])
  
if e:
    o.applyMovement([0,0,0.3])

lembrando esse movimento e muito recomendado para jogos FPS.


o segundo exemplo e onde laser pode ser usado em vários jogos, nele se usa o RAY+ADD CONTROLLER e movimento simples para esse exemplo.
nota se que existe uma esfera ela faz o laser ser emitido sem ele o laser não aparece.
o script:

from bge import logic as g, events
from bge import render as r
c = g.getCurrentController()
o = c.owner
cena = g.getCurrentScene()
for i in c.sensors:
    exec(i.name+"=i")

hit = Ray.hitPosition
cor = [1,0,0]
bola = cena.objects["bola1"]
laser = cena.objects["laser"]
distancia = o.getDistanceTo(bola)
bola.position = hit
r.drawLine(o.position,bola.position,cor)  #a (linha de desenho) responsável pelo laser
laser.localScale[2] = distancia/2.4            #função faz que o lazer não atravesse a parede

e possível também criar animações com esse script que funciona também.


no terceiro e mais técnico para uso de jogo, porem ajuda a você esta criando jogo para testar a detecção de objetos no cenário.
na primeira imagem temos um o chão, cubo e uma esfera. aqui temos a COLISION + ADD CONTROLLER com pulse ligado.
na segunda imagem o exemplo rodando ele detecta com colisão .
no vídeo o exemplo rodando.

o script:

from bge import logic as g, render as r,events
c = g.getCurrentController()
o = c.owner
cena = g.getCurrentScene()
for i in c.sensors:
    exec(i.name+"=i")
   
texto = cena.objects["Text"]
   
hit = detecta.hitObjectList
texto["Text"] = str(hit)

e isso por hoje.





Nenhum comentário:

Postar um comentário