domingo, 1 de novembro de 2020

26=BLENDER BGE (POINT CLICK)

 olá amigos , hoje vamos falar sobre point click apesar de ser função pouco usada hoje em jogos, pode ser pra você algo diferente em seus jogos, porque oque vale e a criatividade.


bom aqui vou apenas falar da função, pode usar qualquer objeto para ser "herói" no meu caso eu fiz com crash fiz muito tempo atrás, vamos la.

(ADD SENSOR) ALWAYS (True)  MOUSE(mouse over any)

(ADD CONTROLLER) python (script)

(ADD ACTUATOR) STEERING (path following( aqui você cria uma navegação mesh )

configuração muda dependendo suas necessidade.

dist(1.000) veloc(2.000)

acce(3.000) turn velo(120.000)

facing (ativado) [ele serve para se herói tiver animação de caminhar] AXIS -Y

visualize(ativado) [serve para poder ver linha de caminho]

 SCRIPT:

########################################################################

from bge import logic as g, events


c = g.getCurrentController()

o = c.owner


cena = g.getCurrentScene()


for i in c.sensors:

    exec(i.name+"=i")

for i in c.actuators:

    exec(i.name+"=i")

 

hitPos = over.hitPosition


mouse = g.mouse.events

click = mouse[events.LEFTMOUSE]



circulo = cena.objects["circulo"]

Cone    = cena.objects["Cone"]


IA.target = Cone

IA.navmesh = cena.objects["Navmesh1"]


distancia = o.getDistanceTo(Cone)


if not over.hitObject == None:

    circulo.position = hitPos

    if click:

        Cone.position = hitPos

        c.activate(IA) 

        c.activate(correr)

        

if distancia < 1.5:

    c.activate(parado)

    c.deactivate(correr)

else:

    c.activate(correr)

    c.deactivate(parado)

###############################################################

lembre se de criar uma seta será ponto onde vc quer que herói vai, e circulo que o ponto destino, isso serve para uma boa visualização da função.


video demostraçao:





e isso por hoje.









domingo, 25 de outubro de 2020

25=BLENDER BGE (EFEITO DE NEVE)

 OLA AMIGOS!!!!,hoje dia 25/10/2020 vamos falar do efeito neve em seus jogos, um efeito bem legal simples pode ser usado para seus ambientes 

vamos começar\;
ALWAYS + ADD CONTROLLER(python)

script:

import bge 
import random
gl = bge.logic

cont = gl.getCurrentController()
own = cont.owner

if not "init" in own:
    for x in range(0,240):
        scene = gl.getCurrentScene()
        x = random.uniform(-25, 25)
        y = random.uniform(-25, 25)
        z = random.uniform(0, 10)
        
        own.position = (x,y,z)
        
        scene.addObject('neve', own, 600)
    own['init'] = True
    
Scene = gl.getCurrentScene()

x = random.uniform(-25, 25)
y = random.uniform(-25, 25)

own.position = (x, y, 10)

Scene.addObject('neve', own, 600)

importante que vocês tenham uma textura para fazer a neve tem ficar outro layer

vale lembrar que o script pode ser configurado de acordo com suas necessidades

use um empty para colocar a função fica melhor nao usa tanto memoria do pc.


video demostraçao

e isso por hoje.




domingo, 18 de outubro de 2020

24=BLENDER BGE (MARCAS DE BALA NA PAREDE)

 OLA AMIGOS. hoje vou mostrar uma função legal, que muito usada em jogos atuais que e marca de bala nas paredes , carros ou em qualquer outra coisa.

vamos la:
ADD SENSOR:
MOUSE( qualquer botao)
RAY(+ Yaxis /R10000.00/x-ray mode[ativado]
ALWAYS(True ativado)

ADD CONTROLLER
python()
os script:

from bge import logic as g
c=g.getCurrentController()
o=c.owner
Ray=c.sensors['Ray']
cena=g.getCurrentScene()
mou=c.sensors['mou']
mira=cena.objects['mira']
hit2=Ray.hitNormal
hit=Ray.hitPosition
dis=o.getDistanceTo(mira)
mira.worldPosition =hit
if mou.positive:
    add = cena.addObject('marca', 'mira', 600)
    add.alignAxisToVect(hit2, 2, 1)

mouse,ray,always ambos ligado no (ADD CONTROLER)python.

crie empty para ser a mira e plane para ser marca, tanto o empty e marca sem colisão.


e isso por hoje.




domingo, 4 de outubro de 2020

23=BLENDER GRID / INIMIGO SEGUE ALVO

 OLA PESSOAS...! nossa já faz um tempo que não posto aqui , bom hoje vamos falar de grid, na verdade e um script bem simples apenas para visualização, porem varia do desenvolvedor oque ira fazer com ele.


ALWAYS+controller(python)

script:

###################################################################################


# Script Grid.py

# By Walberti Evaristo

# Info https://criacoesblender.wordpress.com

################################################

 

import bge

import bgl

 

# As seguintes variáveis devem ser alteradas para atender melhor as

#nesicidades do usuário

 

Size = 20 # Tamanho da grade

LineWidth = 1 # Largura da linha

LineSmooth = False # Remove o serrilhado da linha

ShowAxis = True # Mostrar eixos ou nao

Color = [0.051, 0.051, 0.051, 1] # Cor da grade [Vermelho, Verde, Azul, Transparencia]

 

def drawGrid():

    bgl.glEnable(bgl.GL_BLEND)

    bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA)

    bgl.glDisable(bgl.GL_LIGHTING)

 

    if LineSmooth:

        bgl.glEnable(bgl.GL_LINE_SMOOTH)

 

    bgl.glLineWidth(LineWidth)

    bgl.glPushMatrix()

 

    bgl.glBegin(bgl.GL_LINES)

 

    for Index in range(-Size, Size + 1):

        bgl.glColor4f(Color[0], Color[1], Color[2], Color[3])

 

        if ShowAxis:

            if Index == int(Size - Size):

                bgl.glColor4f(1, 0, 0, 1)

 

        bgl.glVertex3f(Size, Index, 0)

        bgl.glVertex3f(-Size, Index, 0)

 

        if ShowAxis:

            if Index == int(Size - Size):

                bgl.glColor4f(0, 1, 0, 1)

 

        bgl.glVertex3f(Index, Size, 0)

        bgl.glVertex3f(Index, -Size, 0)

 

    bgl.glEnd()

 

    bgl.glPopMatrix()

    bgl.glEnable(bgl.GL_LIGHTING)

    bgl.glLineWidth(1)

    bgl.glDisable(bgl.GL_LINE_SMOOTH)

 

def main():

    Scene = bge.logic.getCurrentScene()

    Scene.post_draw.append(drawGrid)

 

main()

###################################################################################

nada mais e a visualização do grid do blender na game engine:



INIMIGO SEGUE O ALVO:

agora vamos falar do inimigo que segue alvo usando python. primeiro o inimigo:

na primiera linha temos:

ALWAYS+CONTORLER(python)+EDIT OBJECT(track to)

na segunda linha temos:

RAY(property/+yaxis/radius(10000.00) x-ray mode ativado

ambos ligado ao CONTROLLER(python).

na segunda linda do RAY na linha ACTUATORS:

MOTION(Y0.30) 

ACTION(property/(ANIMAÇAO DE 360G de barra (vai ser o que vai rastrear o alvo) 

(crie uma propriedade para objeto(qualquer nome)


OBJETO SETA:

crie uma animaçao onde a barra tem que girar 360 graus no seu eixo.

na primeira linha :

ADD SENSOR

RAY(property/+y axix /radius 10000.00 / x ray mode ATIVADO


CONTROLLER(python)


ACTUATORS

ACTION(property(animação) property(nome variavel)

EDIT OBJECT(track to ()

MOTION( Y 0.30)

(crie uma propriedade para objeto(qualquer nome)) o mesmo no tem ser colocado no action do inimigo.


crie objetos onde o inimigo ira seguir (uma dica para ver ele funcionado bem use empty para criar objetos para ele seguir )


SCRIPT( poe no addcontroller)

###################################################################################

from bge import logic as g


c=g.getCurrentController()


o=c.owner


track=c.actuators['track']


Ray=c.sensors['Ray']


obj=Ray.hitObject

Motion=c.actuators['Motion']

ani=c.actuators['ani']


c.activate(track)

c.activate(ani)

track.object=obj





if Ray.positive:   

    c.activate(Motion)

    o['ipo']=1

    

else:

    o['ipo']+=1

    if o['ipo']>60:

        o['ipo']=1

    c.deactivate(Motion)

###################################################################################


demostraçao:



agora as postagem serão aos DOMINGOS 




quinta-feira, 30 de julho de 2020

22=BLENDER BARRA DE VIDA

olá amigos faz bom tempo que não posto aqui, porem o blog não morreu não ,hoje dia 30/07/2020 as 8;49 da manha estamos na ativa, nessa postagem irei mostrar a barra vida que diminui ao colidir com objeto que da dano e quando ela zera personagem some, isso era usado em algum jogos bem antigos.
o personagem usado e a suzanne e apliquei um rigid body para ficar mais fácil o exemplo pois ele ja possui uma física aplicada, Sem precisar configurar.

na suzanne tem ALWAYS E COLLISION(PROP="PERIGO" )juntas ligada ao controller PYTHON, perigo e nome da propriedade dos espinhos vermelhos. o Always liga ao script vida e colisao tem estar em TRUE.

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")
    
Collision.frequency = 10    

    
if ini.positive:
    g.addScene("cena2")   
    
    
hud = g.getSceneList()[1].objects

barra = hud["energia"]

barra.localScale[0] = o["vida"]/500

barra.color[0] = 40/o["vida"]           #r,g,b,a
barra.color[1] = o["vida"]/40

if Collision.positive:
    o["vida"]-=1
    
if o["vida"] < 1:
    o["vida"] = 1
    o.endObject()

lembrando que a barra não precisa de animação usando escala ,o próprio script já faz isso,
tem se criar uma segunda cena para colocar a barra.
por fim a propriedade da suzanne tem ter nome aqui esta como(( vida )),pode ser oque você quiser, lembrando se caso mudar tem mudar também no script.



NO PRIMEIRO VIDEO FORA DA CAMERA

SEGUNDO VIDEO DENTRO CAMERA


E ISSO POR HOJE.😜


quinta-feira, 25 de junho de 2020

21=BLENDER BGE troca de cena

olá amigo , já faz tempo que não posto aqui, isso pq eu fechei meu canal game play do youtube porque, já não estava contente com ele, agora estou no facebook .bom mais hoje vamos falar de mudança de cenário por menu.
primeira mente precisa de ALWAYS e MOUSE no add sensor e nos controller um python para actuator SCENE "set scene (uma cena que vc cria")
o script:

from bge import logic as g, render as r,events
c = g.getCurrentController()
o = c.owner
cena = g.getCurrentScene()
mouse = g.mouse.events
left = mouse[events.LEFTMOUSE]
over = c.sensors["over"]
cena2 = c.actuators["cena2"]
hit = over.hitObject
o["hit"] = str(hit)
if not hit == None:
    if str(hit) == "jogar" and left:
        c.activate(cena2)
       
    if str(hit) == "sair" and left:
        g.endGame()
no exemplo nota se que possui duas barras, a verde e para jogar que quando clica com mouse leva para o cenário , a vermelha fecha o jogo ,  o script que e colocado na câmera, as barras e só precisa nomear para verde(jogar0, vermelha(sair).


e isso por hoje:



quinta-feira, 28 de maio de 2020

20=BLENDER BGE colisão de flecha

olá amigos, hoje 28/05/2020 vamos falar sobre colisão de fecha, uma função para algum jogos que também serve para jogo de alvo .
no primeiro objeto triangulo ALWAYS(True)+ADD CONTROLLER com script da flecha:

from bge import logic as g, events
c = g.getCurrentController()
o = c.owner
cena = g.getCurrentScene()
mouse = g.mouse.events
clic = mouse[events.LEFTMOUSE] in [1,8]
if clic:
    flecha = cena.addObject("flecha",o,100)
    flecha.applyForce([0,2000,0])

no bloco seria o personagem ou alvo ou qualquer outra coisa nele vai COLISION(True)+ADD CONTROLLER com script da colisão da flecha, vai fazer ela grudar no bloco, lembrando que não precisa indicar no colision a propriedade.

script  colisão da flecha

from bge import logic as g, events
c = g.getCurrentController()
o = c.owner

cena = g.getCurrentScene()
for i in c.sensors:
    exec(i.name+"=i")
 
for i in c.actuators:
    exec(i.name+"=i") 
   

c.activate(Motion)

   
hit = Collision.hitObject

if Collision.positive:
    hit.setParent(o)

 
agora o exemplo rodando ,obs: que coloquei Always no bloco para ele ficar rodando, porem alwais não e parte da função aqui.

e isso por hoje