problema no meu jogo

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

problema no meu jogo

Mensagem por sonicfan1 em Seg 23 Nov 2009, 11:56

oi galera!!eu to com um problema aqui é que quando eu vo testar meu
jogo o sonic ja começa acelerando sem eu fazer nada
pra vocês intenderem melhor meu problema vou botar o código
que coloquei no step do sonic aqui está ele:
Código:

if hspeed > 0
{
sprite_index=sonic_walking
image_xscale=1
}

if hspeed < 0
{
sprite_index=sonic_walking
image_xscale-=1
}

if hspeed > 8
{
sprite_index=sonic_running
image_xscale=1
}

if hspeed < 8
{
sprite_index=sonic_running
image_xscale-=1
}

if hspeed > 17
{
sprite_index=sonic_run_fast
image_xscale=1
}

if hspeed < 17
{
sprite_index=sonic_run_fast
image_xscale-=1
}

if hspeed > 25
{
hspeed=25
}

if hspeed < 25
{
hspeed=25
}

if keyboard_check_pressed(vk_right)
{
hspeed+=1
}
if keyboard_check_pressed(vk_left)
{
hspeed-=1
}
if keyboard_check_released(vk_right)
{
hspeed-=1
}
if keyboard_check_released(vk_left)
{
hspeed-=1
}
if hspeed=0
{
sprite_index=sonic_standing
hspeed=0
}

no create eu coloquei direction 270 e gravity 0.5
e na colisão com o bloco eu coloquei vert speed 0
e botei uma mask no sonic

espero que possam responder

fico aguardando uma resposta Happy

sonicfan1

Número de Mensagens : 138
Data de inscrição : 26/07/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por vinians em Seg 23 Nov 2009, 13:55

Quando você usa direction e gravity o GM automaticamente calcula valores de hspeed e vspeed pra direção selecionada. Na verdade o que o GM faz é calcular toda velocidade expressa em direction e speed em valores de vspeed e hspeed. Pra resolver seu problema vc deveria usar uma outra variável sua para controlar a aceleracao ao invés do próprio hspeed. Por isso que nao funciona, ja que vc define gravidade no CREATE o hspeed vai ser na maioria das vezes <> 0.

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por Denis Lemos em Seg 23 Nov 2009, 14:10

if hspeed > 8
{
sprite_index=sonic_running
image_xscale=1
}
if hspeed < 8
{
sprite_index=sonic_running
image_xscale-=1
}

if hspeed > 17
{
sprite_index=sonic_run_fast
image_xscale=1
}

if hspeed < 17
{
sprite_index=sonic_run_fast
image_xscale-=1
}

if hspeed > 25
{
hspeed=25
}

if hspeed < 25
{
hspeed=25
}
Acho que o seu erro está nessa parte !

Lá em cima primeiro voce colocou:
Código:
if hspeed<8{  }
acho que teria que ser :
Código:
if hspeed< -8 {  }

E depois :
Código:
if hspeed<17{  }
Deveria ser:
Código:
if hspeed< -17{  }

E depois onde está o pior erro, oque faz o sonic já sair andando:
Código:
if hspeed <25{  hspeed=25 }
Aí como ele começa parado o "hspeed" dele é menor que "25" então ficará igual 25,e começará já correndo,
entende ?

O certo seria:

Código:
if hspeed< -25 { hspeed=-25 }

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por sonicfan1 em Seg 23 Nov 2009, 17:25

denis.l ajeitei o código e até que deu certo mas,Vinians como posso fazer o objeto acelerar com uma variavel?

sonicfan1

Número de Mensagens : 138
Data de inscrição : 26/07/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por Denis Lemos em Seg 23 Nov 2009, 17:44

denis.l ajeitei o código e até que deu certo mas,Vinians como posso fazer o objeto acelerar com uma variavel?
Eu fiz uma sistema de velocidade para o meu joguinho utilizando X e Y !

Coloque no create do seu personagem:
Código:
 velocidade=0
No evento "Key right" :
Código:
velocidade+=1
No evento "Key left" :
Código:
velocidade-=1

No step:
Código:
x+=velocidade
if velocidade>10{ velocidade=10}
if velocidade<-10{ velocidade=-10}

Está aí uma esquema de movimento quase igual o de hspeed !!!

Só que para fazer a "fricção" eu vou te deixar pensar um pouquinho, para ninguém ficar mal acustumado à receber tudo de bandeija, mas se não conseguir, me avisa que logo eu posto como que é !!!

Tchau !!! santa

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por sonicfan1 em Seg 23 Nov 2009, 18:23

Denis eu não sei fala porfavor

PS:eu não vou só copiar e colar mas tambem vou estudar o código
pra aprender com ele Happy

sonicfan1

Número de Mensagens : 138
Data de inscrição : 26/07/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por Denis Lemos em Seg 23 Nov 2009, 18:35

adiciona lá no create:
Código:
freio=.5
Regule o valor do seu gosto !

E também adiciona lá step :
Código:
//fricção
if velocidade>0{
  velocidade-=freio
    if velocidade<=0{
      velocidade=0
    }
}
if velocidade<0{
  velocidade+=freio
    if velocidade>=0{
      velocidade=0
    }
}

Só que isso pode fazer a sua arrancada diminuir... Então lá nos eventos de " keyPress " right e left coloque o valor para 1.5 em cada um !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por sonicfan1 em Seg 23 Nov 2009, 18:45

como assim? em que variaveis eu coloco isso?

sonicfan1

Número de Mensagens : 138
Data de inscrição : 26/07/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por Denis Lemos em Seg 23 Nov 2009, 19:16

Não tem que colocar em variáveis nenhuma !
Para ficar mais fácil era bom você criar um novo projeto e fazer passo à passo !

E no Evento create do seu personagem colocar :
Código:

freio=.5  // Regule do seu gosto
velocidade=0 // aqui deixe como "0'' mesmo

E no evento Seta para Direita :
Código:
if place_free(x+1,y){
velocidade+=1.5
}
E no evento Seta para esquerda :
Código:
if place_free(x-1,y){
velocidade-=1.5
}
No Evento Step :
Código:
x+=velocidade
if velocidade>10{ velocidade=10}
if velocidade<-10{ velocidade=-10}

// fazer a fricção do personagem
if velocidade>0{
  velocidade-=freio
    if velocidade<=0{
      velocidade=0
    }
}
if velocidade<0{
  velocidade+=freio
    if velocidade>=0{
      velocidade=0
    }
}

Se não conseguir eu te mando uma engine, é só falar !!!

Tchau !!! santa

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: problema no meu jogo

Mensagem por Conteúdo patrocinado Hoje à(s) 15:42


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