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
meu finalmente aprendi a criar meu primeiro jogo no blitz 3D, vlew ai continue assim.
ResponderExcluiraguardando proximos tutos.
Ó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!
ResponderExcluir=====================
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
===============================
olha ficou legal, eu fiz um exemplo basico e inclementações nessa engine são infinitas.
ResponderExcluirPraticamente em TODOS os meus projetos eu começo com esse padrão. e sempre ficam bons.