[Duvida]Altura em 3D

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Duvida]Altura em 3D

Mensagem por iFaé em Dom 17 Fev 2013, 15:58

Bom, eu estava lendo as apostilas do Rodrigo Santiago e uma duvida, como eu faço um objeto voar e ir para o chão, como mudar a distância do personagem para o chão?
Essa duvida surgiu na engine_medium_all da apostila medio!
Tipo lá o player, fica voando, como eu faço para no meio do jogo escolher se eu quero q voe ou fique no chão e para escolher a altura do vôo?

iFaé

Ranking : Nota D
Número de Mensagens : 455
Idade : 19
Data de inscrição : 02/02/2011
Notas recebidas : D - D - D - B
Reputação : -14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://matheusfaegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por gabrielsch em Dom 17 Fev 2013, 16:56

Você pode fazer isso mudando o eixo Z, para isso o objeto deve ter uma variável que controla esse eixo, na maioria dos casos eu coloco o nome dela apenas como "Z", desse jeito:
Código:
z = 0
Depois disso você deve usar essa variável em um argumento especifico das funções 3D que você está usando.

Feito isso agora vamos para a gravidade, que é o que eu entendi, no eixo Z não temos variáveis que controlam a gravidade ou a direção da mesma como o próprio gravity e o gravity_direction. Sendo assim você terá que criar suas próprias variáveis para fazer o trabalho como por exemplo:
Código:
z_gravity = 0
Essa variável vai controlar a força que vamos aplicar ao eixo Z do objeto que queremos que tenha gravidade, mas ela deve aumentar conforme o objeto fique no ar, para isso no step do mesmo vamos ter que fazer isso:
Código:
if z > 0
{
 z_gravity += 0.1
 z -= z_gravity
}
else
{z_gravity = 0}

Nesse código nós verificamos se o eixo Z está maior que 0 (o nível do chão é claro), se estiver maior ele vai aumentar a força da variável z_gravity e logo depois subtrair do próprio eixo Z fazendo que a cada step o objeto caia mais rápido conforme o valor de z_gravity vai aumentando. Caso o objeto esteja no chão não é necessário ter a gravidade para puxa-lo para baixo então nós definimos ela como 0.

Pode ser que esse código esteja errado porque não testei ele realmente mas a base é essa espero que tenha entendido.

Flw! sorrindo2

___________


Acesse: http://foxen.com.br/



gabrielsch

Ranking : Nota A
Número de Mensagens : 1229
Idade : 21
Data de inscrição : 06/12/2009
Notas recebidas : D + A + A
Reputação : 28
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por Rodrigo Santiago em Dom 17 Fev 2013, 21:08

Olha gabrielsch, eu usei a p3dc, então fica um pouco diferente.
Troque a variavel z(no step) por zmin, pronto ai você usa o código do gabrielshc e troque z > 0 por z>zmin, que é o chão, não esqueça de criar zmin no create.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por un00brn em Dom 17 Fev 2013, 22:49

Todas as respostas acima estão corretas... Porém, vou mostrar mais uma forma!

no Create do seu objeto use
Código:

z1 = 0 //Base do objeto
z2 = 32 //Altura do objeto
e na hora que você for "Desenhar" o D3D no Draw, use
Código:

d3d_draw_block(x-16,y-16,z1,x+16,y+16,z2,textura,1,1)
no Step, limitamos ele até o chao
Código:

if z1 <= obj_chao.z1 z1 = obj_chao.z1
if z2 <= obj_chao.z1+32 z2 = obj_chao.z1+32
OBS :: Você deve criar o obj_chao para ser o solo, e deve informar ao create, qual será o valor de altura do chao. Exemplo
Código:

z1 = 0
Agora, o seu objeto já está configurado para a gravidade.
Mas, para fazer subir em alguma função...
aqui está o code
Código:

z1 += 5
z2 += 5
Isso fará seu objeto subir. e para descer, use
Código:

z1 -= 5
z2 -= 5

Espero ter entendido ! Valeu


Última edição por un00brn em Dom 17 Fev 2013, 22:51, editado 1 vez(es) (Razão : Corrigir code)

un00brn

Número de Mensagens : 117
Idade : 18
Data de inscrição : 18/06/2012
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.djurielrn.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por Rodrigo Santiago em Seg 18 Fev 2013, 05:10

Foi bom sua intensao, mas isso atrapalha pois o chao da engine nao e reto! E cheio de subidas e decidas alem de voce esta usando colisao 2d para 3d, que na apostila foi avisado para nunca usar isso no chao.
A colisao e verificada com a p3dc, no modelo e nao com sprites. Alem e claro de nao ser usado no draw variaveis dentro do desenho e sim com transformacoes de translacao e rotacao, o que atrapalharia tambem.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por un00brn em Seg 18 Fev 2013, 10:29

é, se no chao existe subidas e descidas...

Eu mostrei a minha ideia por que pensava que seria algo simples xD
Até eu agora fiquei interessado por essa engine!

un00brn

Número de Mensagens : 117
Idade : 18
Data de inscrição : 18/06/2012
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.djurielrn.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por iFaé em Seg 18 Fev 2013, 13:07

E se eu quiser controlar a altura, tipo Shift sobe/Ctrl desce?

iFaé

Ranking : Nota D
Número de Mensagens : 455
Idade : 19
Data de inscrição : 02/02/2011
Notas recebidas : D - D - D - B
Reputação : -14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://matheusfaegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por Rodrigo Santiago em Seg 18 Fev 2013, 13:16

Ué!? coloca z+=1 ou z-=1 (ou qualquer outro numero) no evento
A , so uma nota, o z do crobat é no chao, o desenho e que e feito alto, vai la no draw e desenha algo com o primeira coordenada xyz com z sendo 0

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por iFaé em Seg 18 Fev 2013, 14:05

Eu ja tentei isso, mas qndo eu solto um dos dois (shift/ctrl), ele volta para o ponto q ele estava! eu to usando:

Código:
 keyboard_check(vk_shift)

e essa historia do crobat, onde eu ponho o z como 0?

iFaé

Ranking : Nota D
Número de Mensagens : 455
Idade : 19
Data de inscrição : 02/02/2011
Notas recebidas : D - D - D - B
Reputação : -14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://matheusfaegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por Rodrigo Santiago em Seg 18 Fev 2013, 15:03

Ai meu deus... olha, vc por acaso colocou um else z=0 ou if! key... ou usou no_key, qualquer coisa, que levasse z=0 ou z=zmin.

Z=0 e so no draw, nao e tipo, pra vc digitar z=0 , e so la onde tem pra desenhar o biboard(ou billboard) nos argumentos do draw wall, colocar 0 na hora de definir o primeiro z e o segundo subtrai peo valor do primeiro.
ex:
-5,0,5 ,5,0,12 voce colocar -5,0,0, 5,0,7

Mas pelo que me parece, vc nao e muito bom em script, acho melhor vc estudar mais um pouqinho

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por iFaé em Seg 18 Fev 2013, 15:12

Eu botei no step:

Código:
if keyboard_check (vk_shift)
{
 z_gravity += 1
 z += z_gravity
}
if keyboard_check(vk_control)
{
z_gravity -=1
z += z_gravity
}

É pra botar isso no Draw?

iFaé

Ranking : Nota D
Número de Mensagens : 455
Idade : 19
Data de inscrição : 02/02/2011
Notas recebidas : D - D - D - B
Reputação : -14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://matheusfaegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por Rodrigo Santiago em Seg 18 Fev 2013, 15:44

Aaaa...agora da pra saber, voce mudou a variavel z no script da p3dc para zmin(no step)?
(esquece o negocio do draw, percebi q ja ta certo)

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por gabrielsch em Seg 18 Fev 2013, 16:34

iFaé escreveu:Eu botei no step:

Código:
if keyboard_check (vk_shift)
{
 z_gravity += 1
 z += z_gravity
}
if keyboard_check(vk_control)
{
z_gravity -=1
z += z_gravity
}

É pra botar isso no Draw?

No seu caso, não é necessário tudo isso. no step caso o Z esteja acima do chão ele aplica a força da gravidade, você não precisa fazer algo que já está sendo feito, o certo seria assim:

Código:
if keyboard_check (vk_shift)
{z_gravity += 1}
if keyboard_check(vk_control)
{z_gravity -=1}

Flw! sorrindo2

___________


Acesse: http://foxen.com.br/



gabrielsch

Ranking : Nota A
Número de Mensagens : 1229
Idade : 21
Data de inscrição : 06/12/2009
Notas recebidas : D + A + A
Reputação : 28
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por iFaé em Seg 18 Fev 2013, 19:34

Não está funcionando!
Aqui, fiz upload da engine pra vcs tentarem e verem onde eu estou errando, se puderem:

http://www.4shared.com/rar/zfyOBxLe/Engine_3D.html

iFaé

Ranking : Nota D
Número de Mensagens : 455
Idade : 19
Data de inscrição : 02/02/2011
Notas recebidas : D - D - D - B
Reputação : -14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://matheusfaegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por Rodrigo Santiago em Ter 19 Fev 2013, 07:22

Vai lá no step do crobat, troca a variavel z por zmin no step, e dá um valor pra ela lá no create(so pra declarar). Pronto, o z está livre pra você usar, e lembre-se zmin vai ser o valor do chao.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Duvida]Altura em 3D

Mensagem por Conteúdo patrocinado Hoje à(s) 12:04


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum