Páginas

terça-feira, 18 de janeiro de 2011

Pulo só no chao 2.0

Uma coisa legal em um game é o seu visual, imagina o reflexo de seu personagem no chao?
Legal né, então blz vamos começar.

Obs o pulo no chao da aula passada estava muito JAPA ( termo usado para muita gambiarra para nada, ou seja complicada. então criei um pulo só no chao mais tranquilo )

MEU EU SEI QUE DA PREGUISSA MAS É NECESSARIO PARA COMEÇAR A SE ACOSTUMAR PARA DEPOIS CRIAR SEU PROPRIO GAME ENGINE. E OUTRA COISA NÃO VOU FICAR EXPLICANDO MUITO SOBRE CADA SCRIPT ENTÃO QUALQUER DUVIDA VEJA OS PRIMEIROS TUTOS OU COMENTE SUA DUVIDA.

Crie um game basico, DIGITE o script a seguir:

;CRIE UM GRAFICO BASICO EM JANELA MESMO

Graphics3D 800,600,32,0
SetBuffer BackBuffer()

;CRIE UMA CAMERA E LUZ, E DEFINA SUA POSIÇÃO X,Y,Z

camera=CreateCamera()
PositionEntity camera,0,1,-4

light=CreateLight()
AmbientLight 50,50,50

;CRIE UM OBJETO CONTROLAVEL( UM PERSONAGEM )

personagem=CreateCube()
PositionEntity personagem,0,1,7
EntityType personagem,ESFERA

;CRIE UM CHAO PARA QUE POSTERIORMENTE VC ANDE EM CIMA

chao=CreateCube()
PositionEntity chao,0,-2,10
ScaleEntity chao,10,0.1,10

;AGORA DEFINA COMO SERA MOVIDO O PERSONAGEM ( CONTROLES )

While Not KeyHit(1)

If KeyDown(17) Then
MoveEntity personagem,0,0,0.05

EndIf

If KeyDown(31) Then
MoveEntity personagem,0,0,-0.05
EndIf

If KeyDown(30) Then
TurnEntity personagem,0,1,0
EndIf

If KeyDown(32) Then
TurnEntity personagem,0,-1,0
EndIf


; AGORA CARREGUE O JOGO E RENDERIZE-O

UpdateWorld
RenderWorld

; INULTILIDADE PARA ESCREVER ALGO NA TELA

Text 1,1,"criando reflexo e pulo"
Flip

; FINALIZE O SCRIPT

Wend
End

oks teste o jogo apertando F5 ou clique no fuguetinho xD
...emfim ta uma engine com um quadrado que da para controlar com o teclado e um chao, então vamos colocar uma gravidade, PULO SÓ NO CHAO 2.0.

Volte ao script e após definir no inicio o grafico escreva o seguinte:

Const CUBO=1 ;
Const ESFERA=2
nochao=0

;no personagem defina na linha abaixo dele assim
o entitytype associa o objeto a uma variavel nesse caso vai associar o personagem a ESFERA

EntityType personagem,ESFERA

;no chao defina na linha abaixo dele assim

EntityType chao,CUBO

;e logo depois crie a colisão escrevendo o script a seguir

Collisions ESFERA,CUBO,2,2

;em baixo de onde ficam os controles coloque um comando para pular, perceba que nele esta definido que para pular vc devera estar no chao ( chao =1 )

If KeyDown(57) And nochao=1 Then
MoveEntity personagem,0,1,0
EndIf

; isso porque definiremos que se o personagem colidir com o cubo(chao) ele estara no chao entaum ele podera pular caso o contrario caso ele esteja no ar, ele não podera pular mais.

If EntityCollided(personagem,CUBO) Then
nochao=1
EndIf

If Not EntityCollided(personagem,CUBO) Then
nochao=0
EndIf

PRONTO TESTEM. caso deu algo errado ai baixem aqui

3 comentários:

  1. meu finalmente aprendi a criar meu primeiro jogo no blitz 3D, vlew ai continue assim.

    aguardando proximos tutos.

    ResponderExcluir
  2. Ótimo tuto, valeu Marcos!!! Acho que só faltou a gravidade :D!!! Mas fiz umas pequenas alterações e funfou perfeitamente. Ta aê o código que rodou, e continue com os posts, são de grande ajuda!
    =====================
    Graphics3D 800,600,32,2
    SetBuffer BackBuffer()

    Const CUBO=1
    Const ESFERA=2
    nochao=0

    camera=CreateCamera()
    PositionEntity camera,0, 1, -4

    light=CreateLight()
    AmbientLight 50, 50, 50

    personagem=CreateCube()
    PositionEntity personagem, 0, 1, 7
    EntityType personagem, ESFERA

    chao=CreateCube()
    PositionEntity chao,0,-2,10
    ScaleEntity chao, 10, .1, 10
    EntityType chao, CUBO

    Collisions ESFERA, CUBO, 2, 2

    ; Declarando uma velocidade
    ;inicial negativa(para baixo)
    vel#=-.1

    While Not KeyHit(1)
    If KeyDown(32)
    MoveEntity personagem,.05,0,0
    EndIf
    If KeyDown(30)
    MoveEntity personagem,-.05,0,0
    EndIf
    If KeyDown(17)
    MoveEntity personagem,0,0,.1
    EndIf
    If KeyDown(31)
    MoveEntity personagem,0,0,-.1
    EndIf

    ; Setanando uma velocidade
    ;positiva(para cima) caso mande pular
    If nochao=1 And KeyDown(57) Then vel=.5

    ; No chao?
    If EntityCollided(personagem, CUBO)
    nochao=1
    EndIf
    If Not EntityCollided(personagem, CUBO)
    nochao=0
    EndIf

    ; Caso o personagem não estaja no chao...
    If nochao=0
    ; Mova o personagem com sua velocidade
    MoveEntity personagem, 0, vel, 0
    ; Setando uma gravidade implícita
    vel=vel-.033
    EndIf

    ; Caso o personagem volte ao chao...
    ; A velocidade se torna nula
    If nochao=1 Then vel=0

    UpdateWorld
    RenderWorld

    Text 1, 1, "Criando reflexo e pulo..."
    Flip

    Wend
    End
    ===============================

    ResponderExcluir
  3. olha ficou legal, eu fiz um exemplo basico e inclementações nessa engine são infinitas.

    Praticamente em TODOS os meus projetos eu começo com esse padrão. e sempre ficam bons.

    ResponderExcluir

Pesquisar