gravidade ou algo do tipo

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

gravidade ou algo do tipo

Mensagem por matheus870 em Qua 18 Jan 2012, 22:47

fui fazer um segundo personagem para meu jogo, ai eu copiei e colei o que faria movimentos e etc.. do player que eu já tinha pronto. mas deu um bug extremo computador o player fica com alguns centímetros acima do chão, parece estar flutuando mas ele fica com a sprite de ele caindo e ele em pé ao mesmo tempo anh! creio que é porque não está 100% encostando no chão ai ele dá como se estivesse pulando bravo

alguem sabe resolver isso confused

matheus870

Número de Mensagens : 118
Idade : 18
Data de inscrição : 23/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por MeGusta em Qua 18 Jan 2012, 23:01

qual o codigo da gravidade??

MeGusta

Número de Mensagens : 75
Data de inscrição : 04/08/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por The Wizard em Qua 18 Jan 2012, 23:04

ei qual o codigo de colisão ? fal ae vai te ajudar mto

The Wizard

Ranking : Nota B
Número de Mensagens : 1129
Idade : 18
Data de inscrição : 24/03/2010
Notas recebidas : B
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://awesomewizards.deviantart.com/

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por matheus870 em Qua 18 Jan 2012, 23:15

quando encosta no chão ele teria que executar isso ( no evento colisão)


move_contact_solid (direction, 12)
speed = 0
ataque_final_esq=false;global.super_variavel=true;desacelera_esq = true
ataque_final=false;desacelera = true;

isso ai faz com que o player não atravesse o chão

hmm procurar os códigos da gravidade nesse monte de códigos do player eh difícil... se eu encontrar posto aqui

@Edit encontrei os códigos da gravidade

não fui eu quem fiz esse codigos, eu peguei e coloquei no player1 e funcionou
mas no segundo ele não funcionou No
Spoiler:
//GRAVIDADE DO JOGO
if place_free(x,y+1)//verifica a cada 1 pixel da queda, se n�o h� objeto p/ colidir, se assim, o lugar � livre para a queda.

{gravity = 1 //gravidade � igual a 1(movimento vertical)
pulando = false} //quando a gravidade � 1, sonic n�o pula
else //sen�o tiver 1 pixel livre abaixo, ou seja est� ocupado por uma sprite...
{gravity = 0 //...gravidade � igual a 0 (parado)
pulando = true} //quando a gravidade � 0, ao sonic � permitido a a��o de pular.
//---------------------------------------------------------------
//DESEQUILIBRANDO, aqui, quando o player chega na ponta de um abismo, ele desequilibra.
//lado direito
if global.super_variavel=true //abre a super variavel, quando ela � falsa N�O ocorre as a��es deste evento do step...
{//..ela se torna false, quando acontece o movimento de ataque do sonic, que separei em outro piece of code abaixo desse.
if gravity = 0 and place_free(x+10,y+Cool and image_xscale = 1
{//a linha acima - SE N�O acontecer o codigo da gravidade (gravity = 0) e for verdadeiro o place_free a sua frente
sprite_index=spr_sonicdesequilibra;image_speed = 0.3
}
if gravity = 0 and place_free(x+20,y+Cool and image_xscale = -1 //o mesmo do codigo acima, porem o sonic t� de costas...
{sprite_index=spr_super_desequilibra;time = 0}//...se eu achar sprites do sonic desiquilibrando de costas ponho aqui.
//lado esquerdo
if gravity = 0 and place_free(x-7,y+Cool and image_xscale = -1
{
sprite_index=spr_super_desequilibra;image_speed = 0.3
}
if gravity = 0 and place_free(x-20,y+Cool and image_xscale = +1
{sprite_index=spr_super_sonicparado;time = 0}//aqui a variavel "time" retorna a zero...
//...(variavel "time", quando player esta parado por 5 segundos ou mais).

//---------------------------------------------------------------------------------------
//MOVIMENTOS //separei os movimentos e as trocas de sprites (estes ultimos est�o mais em baixo)
//lado direito
//Corre (a velocidade cresce aritm�ticamente e ainda possui um segundo salto de velcidade).
if keyboard_check(vk_right)and trava_dir = false and agacha = false and olha = false then
{
time = 0 ; //aqui a variavel "time" retorna a zero (variavel "time", quando player esta parado por 5 segundos ou mais).
if acelera < 20 then acelera+=vel1 //o sinal "+=" permite que a vari�vel "acelera" acumule aritm�ticamente (relativamente).
if acelera > 20 then acelera+=vel2 //aqui o player passa a ter uma acelera��o mais rapida (um salto dobrado na acelera��o).
if acelera_esq = 0 then image_xscale = 1 //a frente do sprite virado p/ a direita.
if (acelera > 15 )then acelera = 20 ; trava_esq = true ;desacelera = false ; x+=acelera
}//"acelera = 20 para velocidade nunca ultrapassar 20 (um limite de velocidade) ("x+=" sentido da esquerda p/ a direita.)

//Desacelera (igual a acelera��o, mas com par�metros negativos).
if keyboard_check_released(vk_right) then
desacelera = true //como a tecla released n�o acumula, cria-se essa v�riavel para enquanto ela for true, acumule "acelera-="
if desacelera = true then
{
if acelera < 10 then acelera-=vel1 //subtrai aritm�ticamente (relativamente) da "acelera" o valor da vari�vel "vel1".
if acelera > 10 then acelera-=vel2 //aqui o player passa a ter uma desacelera��o mais rapida
if acelera > 0 then trava_dir =false
if (acelera < 0 )then acelera = 0 ; trava_esq =false ; x+=acelera
}//"x+=acelera", mesmo com par�metros negativos, � positivo, pois se esta desacelerando uma acelera��o no sentido "x+").

//freia (enquanto a variavel vel1 vale 0.1 e a vel2 vale 0.2 a variavel freia vale 0.5, ent�o para o sonic bem r�pido).
if keyboard_check(vk_left )and trava_esq = false then
{
if acelera > 0 then acelera-=freia //subtrai aritm�ticamente da "acelera".
if acelera < 0 then image_xscale = -1 //SE "acelera" menor que zero, sprite inverte
if acelera < 0 then acelera = 0 ;
}

//lado esquerdo (n�o comentei, pois em rela��o ao direito, apenas troca os param�tros e as variaveis de trancagem de teclas)
//Corre esquerda
if keyboard_check(vk_left)and trava_esq = false and agacha = false and olha = false then
{
time = 0 ;
if acelera_esq < 20 then acelera_esq+=vel1
if acelera_esq > 20 then acelera_esq+=vel2
if acelera = 0 then image_xscale = -1
if (acelera_esq > 15 )then acelera_esq = 20 ; trava_dir = true ; desacelera_esq = false; x-=acelera_esq
}

//Desacelera esquerda
if keyboard_check_released(vk_left )then
desacelera_esq = true
if desacelera_esq = true then
{
if acelera_esq < 10 then acelera_esq-=vel1
if acelera_esq > 10 then acelera_esq-=vel2
if acelera_esq > 0 then trava_esq =false
if (acelera_esq < 0 )then acelera_esq = 0 ; trava_dir =false ; x-=acelera_esq
}

//freia esquerda
if keyboard_check(vk_right )and trava_dir = false then
{
if acelera_esq > 0 then acelera_esq-=freia
if acelera_esq < 0 then image_xscale = 1
if acelera_esq < 0 then acelera_esq = 0 ;
}

//pula
if keyboard_check_pressed (ord("Z")) and agacha = false and olha = false
{
time = 0 ;//aqui a variavel "time" retorna a zero (variavel "time", quando player esta parado por 5 segundos ou mais)
if pulando = true
vspeed = -12.5 //for�a do pulo
sound_play(snd_sonic_pula)//som do pulo
}
if keyboard_check(vk_right) and gravity = 1 then //para que mesmo se player estiver parado, ao pular poder se mover no ar.
hspeed = 2
if keyboard_check(vk_left) and gravity = 1 then //para que mesmo se player estiver parado, ao pular poder se mover no ar.
hspeed = - 2
//---------------------------------------------------------------------------------------
//SPRITES (sem loops).
//pulo
if gravity = 1 then {sprite_index = spr_super_sonicpula ;image_speed = 0.4 ; parado = false}//sofrendo gravidade sempre � spr pula
else

//parado
if parado = false and gravity = 0 and time < 150 then sprite_index = spr_super_sonicparado //150 equivale a + ou - 5 segundos.
//time (sonic irrita-se, at� que o jogador tecle)
if sprite_index = spr_super_sonicparado then time+=1; //ganha step na variavel "time", quando maior que 150, player aguarda.
if time>150 and image_xscale = 1 and gravity = 0 //n�o se irrita na beira de abismos (t� preocupado em n�o cair,haha)
{
sobe_image = false
sobe_image2 = false
image_speed=0
sprite_index = spr_super_aguarda ; image_xscale = 1
//n�o quero que "spr_sonicaguardando" sofra loop, ent�o os c�digos "index" abaixo.
if image_index<10 then {image_index+=0.2}
}
if time>150 and image_xscale = -1 and gravity = 0 //n�o se irrita na beira de abismos (t� preocupado em n�o cair,haha)
{
sobe_image = false
image_speed=0
sprite_index = spr_super_sonicparado ; image_xscale = -1
if image_index<10 then {image_index+=0.2}//como a subimagem come�a no zero ENT�O � menor que 10, imagem avan�a c/ veloc. 0.2
}

//abaixa e levanta
if keyboard_check(vk_down) and gravity = 0 and global.plataforma=false then /////////////////////
{
time=0
parado = true ; agacha = true
sprite_index = spr_super_sonicabaixa ; image_speed = 0 ; sobe_image = false; sobe_image2 = false
//n�o quero que "spr_sonicabaixa" sofra loop, ent�o os c�digos "index" abaixo.
if image_index < 3 then image_index += 0.3 //se subimagem for menor que 3, avan�a com velocidade de 0.3 (s� tem 3 subimagem)
}
if keyboard_check_released(vk_down) and gravity = 0 then sobe_image = true
if sobe_image = true and gravity = 0 then
{
agacha = false
sprite_index=spr_super_sonicabaixa; sobe_image2 = false
if image_index > 0.3 then image_index -= 0.3
//se for > que 0.3 significa que a imagem avan�ou (teclei), ent�o ao soltar a tecla, a subimagem decai com velocidade de 0.3
if image_index<0.3 then {sprite_index = spr_super_sonicparado;image_speed=0}
}

//olha pra cima
if keyboard_check(vk_up) and gravity = 0 and acelera<=0 and acelera_esq<=0 and global.plataforma=false then
{
time=0
parado = true ; olha = true
sprite_index = spr_super_olhando_cima ; image_speed = 0 ; sobe_image2 = false; sobe_image = false
//n�o quero que "spr_olhando_cima" sofra loop, ent�o os c�digos "index" abaixo
if image_index < 3 then image_index += 0.3 //se subimagem for menor que 3, avan�a com velocidade de 0.3 (s� tem 3 subimagem)
}
if keyboard_check_released(vk_up) and gravity = 0 then sobe_image2 = true ;
if sobe_image2 = true and gravity = 0 then
{
olha = false
sprite_index=spr_super_olhando_cima; sobe_image = false
if image_index > 0.3 then image_index -= 0.3
//se >0.3 significa que a imagem avan�ou (teclei), ent�o ao soltar a tecla, a subimagem decai com velocidade de 0.3
if image_index<0.3 then {sprite_index = spr_super_sonicparado;image_speed=0}
}
//---------------------------------------------------------------------------------------
//SPRITES (aqui, as mudan�as s�o baseadas nas a��es dos movimentos e velocidade do "player".)
//Acelera direita ou esquerda,quanto maior a velocidade do player, mais rapida fica a sprite,at� que muda p/"spr_soniccorre"
if acelera < 0 or acelera_esq < 0 and gravity = 0 then {sprite_index = spr_sonicparado} else
if acelera > 0.2 and acelera < 2 or acelera_esq > 0.2 and acelera_esq < 2 and gravity = 0 then
{sprite_index = spr_super_acelera ; image_speed = 0.15 ; parado = true ; sobe_image = false;sobe_image2 = false} else
if acelera > 2 and acelera < 7 or acelera_esq> 2 and acelera_esq < 7 and gravity = 0 then
{sprite_index = spr_super_acelera ; image_speed = 0.25 ; parado = true ; sobe_image = false;sobe_image2 = false} else
if acelera > 7 and acelera < 15 or acelera_esq > 7 and acelera_esq < 15 and gravity = 0 then
{sprite_index = spr_super_acelera ; image_speed = 0.6 ; parado = true ; sobe_image = false;sobe_image2 = false} else
if acelera > 15 and acelera < 21 or acelera_esq> 15 and acelera_esq < 21 and gravity = 0 then
{sprite_index = spr_super_corre ; image_speed = 0.6 ; parado = true ; sobe_image = false;sobe_image2 = false}
if acelera > 0.1 and acelera < 0.2 or acelera_esq> 0.1 and acelera_esq < 0.2 and gravity = 0 then
{sprite_index = spr_super_sonicparado}
else

//rola direita ou esquerda
if acelera > 0 and acelera < 2 or acelera_esq > 0 and acelera_esq < 2 and keyboard_check(vk_down) then
{sprite_index = spr_super_sonicpula ; image_speed = 0.1 ; agacha = true ; desacelera = true;desacelera_esq = true} else
if acelera > 2 and acelera < 7 or acelera_esq > 2 and acelera_esq < 7 and keyboard_check(vk_down) then
{sprite_index = spr_super_sonicpula ; image_speed = 0.2 ; agacha = true ; desacelera = true;desacelera_esq = true} else
if acelera > 7 and acelera < 15 or acelera_esq > 7 and acelera_esq < 15 and keyboard_check(vk_down)then
{sprite_index = spr_super_sonicpula ; image_speed = 1 ; agacha = true ; desacelera = true;desacelera_esq = true} else
if acelera > 15 and acelera < 21 or acelera_esq > 15 and acelera_esq < 21 and keyboard_check(vk_down)then
{sprite_index = spr_super_sonicpula ; image_speed = 2 ; agacha = true ; desacelera = true;desacelera_esq = true} else

//freia direita
if keyboard_check(vk_right)and trava_dir = false and acelera_esq > 0 and gravity = 0 then
{sprite_index = spr_super_derrapa ; image_speed = 0.3;sound_play(snd_sonic_derrapa)}
else

//freia esquerda
if keyboard_check(vk_left)and trava_esq = false and acelera > 0 and gravity = 0 then
{sprite_index = spr_super_derrapa ; image_speed = 0.3;sound_play(snd_sonic_derrapa)}

//UF�! ACABOU.
//--------------------------------------------------------------------------------------------
//Quando estava parado e apertava p/ direita e vira
//lado direita
if not keyboard_check(vk_right)and acelera=0 and image_xscale=1 and gravity=0 and sobe_image=false and sobe_image2=false
and not keyboard_check(vk_down)and not keyboard_check(vk_up) and not place_free(x+18,y+8)and not place_free(x+20,y+Cool
and not place_free(x-18,y+8)and not place_free(x-20,y+8)and time<150 then {sprite_index = spr_super_sonicparado}else

//lado esquerda
if not keyboard_check(vk_left)and acelera_esq=0 and image_xscale=-1 and gravity=0 and sobe_image=false and sobe_image2=false
and not keyboard_check(vk_down)and not keyboard_check(vk_up)and not place_free(x-18,y+8)and not place_free(x-20,y+Cool
and not place_free(x+18,y+8)and not place_free(x+20,y+8)and time<150 then {sprite_index = spr_super_sonicparado}

}//fechamento da super_variavel

matheus870

Número de Mensagens : 118
Idade : 18
Data de inscrição : 23/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por The Wizard em Qua 18 Jan 2012, 23:30

nossa,que codigo gigante,não consegui localizar o erro,acho que o erro tá na mask do sprite

The Wizard

Ranking : Nota B
Número de Mensagens : 1129
Idade : 18
Data de inscrição : 24/03/2010
Notas recebidas : B
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://awesomewizards.deviantart.com/

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por matheus870 em Qua 18 Jan 2012, 23:37

Guga games escreveu:nossa,que codigo gigante,não consegui localizar o erro,acho que o erro tá na mask do sprite

Bingo! tinha uma sprite junto do outro playe chamada mascara_player, como eu nunca mechi com isso a princípio eu achei que fosse inútil no jogo até porque não achei nada se referindo a ele.

como eu insiro a mask?

matheus870

Número de Mensagens : 118
Idade : 18
Data de inscrição : 23/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por TRFN em Qua 18 Jan 2012, 23:41

no create,coloque um mask_index para definição,este é o melhor metodo e não falha.
EX :
Código:
mask_index = spr_minha_mascara //substitua minha mascara pelo nome de sprite da outra mascara

Mas procure estudar e entender o código,por que senão seujogo terá muitos bugs.

flws

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por matheus870 em Qua 18 Jan 2012, 23:52

vlw funcionou agora por fome de aprender, porque essa mask é tão importante no jogo?

matheus870

Número de Mensagens : 118
Idade : 18
Data de inscrição : 23/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por TRFN em Qua 18 Jan 2012, 23:56

O mask é usado para definir a colisão.Sem mask a colisão fica ruin se a sprite do objeto for com curvas.Daí o uso de Mask .O Mask melhora a colisão ;)

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por matheus870 em Sex 20 Jan 2012, 13:27

aproveitando o tópico que fala sobre gravidade do personagem, alguém sabe como posso fazer efeitos de água?

matheus870

Número de Mensagens : 118
Idade : 18
Data de inscrição : 23/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por The Wizard em Sex 20 Jan 2012, 13:34

haha eu sei,faz assim no step
Código:
if na_agua=true
{gravity=0.5}
else
{gravity=1}
e na colisão com a agua
Código:
na_agua=true
e na colisão com o chão
Código:
na_agua=false
e no create
Código:
na_agua=false

The Wizard

Ranking : Nota B
Número de Mensagens : 1129
Idade : 18
Data de inscrição : 24/03/2010
Notas recebidas : B
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://awesomewizards.deviantart.com/

Voltar ao Topo Ir em baixo

Re: gravidade ou algo do tipo

Mensagem por Conteúdo patrocinado Hoje à(s) 05:48


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